<Grid Background="white" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Label Content="Physical Test" Margin="0,0,0,0" FontSize="12" FontWeight="DemiBold"
HorizontalAlignment="Left" VerticalAlignment="Top" />
<ComboBox Height="22" Margin="90,0,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top"
ItemsSource="{Binding physicalTestList, Mode=OneWay}" SelectedItem="{Binding selectedPhysicalTest}"
DisplayMemberPath="physicalTestName" SelectedValuePath="physicalTestID"/>
<Button Content="Refresh"
HorizontalAlignment="Left" VerticalAlignment="Top"
Margin="200,0,0,0" Width="70" Height="22"
Command="{Binding buttonRefresh}" IsEnabled="{Binding RefreshEnable, Mode=OneWay}"/>
<CheckBox Margin="300,5,0,0" HorizontalAlignment="Left"
Content="Confirmed?"
IsChecked="{Binding IsConfirmed, Mode=OneWay}"
Command="{Binding buttonConfirm}" IsEnabled="{Binding ConfirmEnable, Mode=OneWay}"
/>
<Grid>
<DataGrid x:Name="theGrid" IsVisibleChanged="OnIsVisibleChanged"
Margin="0,30,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AutoGenerateColumns="False" CanUserAddRows="False" IsReadOnly="False"
ItemsSource="{Binding theList, Mode=OneWay}"
>
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Navy"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="SteelBlue"/>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Well" Binding="{Binding well}" IsReadOnly="True" />
<DataGridTextColumn Header="Control" Binding="{Binding controlName}" IsReadOnly="True" />
<DataGridTextColumn Header="Type" Binding="{Binding display}" IsReadOnly="True" />
<DataGridTemplateColumn Header="Value" IsReadOnly="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding processedValue }"
Background="{Binding valueColor}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Min" Binding="{Binding minDisplay }" IsReadOnly="True" />
<DataGridTextColumn Header="Max" Binding="{Binding maxDisplay }" IsReadOnly="True" />
<DataGridCheckBoxColumn Header="Omit For SPC?" Binding="{Binding isOutlier}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
我有 Checkbox 物件的屬性 IsChecked 正確,使用以下
IsChecked="{Binding IsConfirmed, Mode=OneWay}"
在 DataGrid“theGrid”中,如果 IsConfirmed = true,我想讓最后一列的 ReadOnly 屬性為 TRUE。所以基本上我希望該列的行為就像 DataGrid 之外的復選框一樣。
此時我有
<DataGridCheckBoxColumn Header="Omit For SPC?" Binding="{Binding isOutlier}" IsReadOnly="True" />
我試圖將其更改為
<DataGridCheckBoxColumn Header="Omit For SPC?" Binding="{Binding isOutlier}" IsReadOnly="{Binding IsConfirmed, Mode=OneWay}" />
但沒有用。
任何指標將不勝感激!
uj5u.com熱心網友回復:
在這種情況下,您應該使用RelativeSource 。binding
例如:
<DataGridCheckBoxColumn Header="Omit For SPC?" Binding="{Binding isOutlier}" IsReadOnly="{Binding IsConfirmed, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type typeOfAncestor}} Mode=OneWay}" />
where是在其模型中具有屬性typeOfAncestor的控制元件型別。IsConfirmedDataContext
uj5u.com熱心網友回復:
它沒有用。這就是我現在所擁有的。
<DataGridCheckBoxColumn Header="Omit For SPC?" Binding="{Binding isOutlier}"
IsReadOnly="{Binding IsConfirmed
, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type CheckBox}}
, Mode=OneWay
}" />
uj5u.com熱心網友回復:
固定的。
您必須添加系結物件
<DataGrid>
<DataGrid.Resources>
<util:BindingProxy x:Key="proxy" Data="{Binding}" />
</DataGrid.Resources>
那么這就是您使用“代理”參考的方式
<DataGridCheckBoxColumn Header="Omit For SPC?" Binding="{Binding isOutlier}"
IsReadOnly="{Binding Data.IsConfirmed, Source={StaticResource proxy} }" />
請注意,您必須使用“資料”。而不是“資料背景關系”。然后你需要創建那個“<util:”前綴
xmlns:util="clr-namespace:PCRPlating.util"
以下是“BindingProxy”類
public class BindingProxy : Freezable
{
#region Overrides of Freezable
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
#endregion
public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
// Using a DependencyProperty as the backing store for Data. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496848.html
