我有以下问题:我需要在下面的代码中添加什么来告诉我的RadioButton绑定到连接到datagrid项目的“IsFacturation”布尔值?我使用DataTrigger来定义自己绑定到datagrid只读状态,所以我需要通过查看合适的父级来“绑定”绑定定义。我认为我必须玩RelativeSource ...WPF控件绑定到DataTrigger之前的绑定之前的绑定
我注意到,当一个数据网格项目的IsFacturation布尔值设置为true时,单选按钮不会按原样检查。
DataGrid项目是“Adresse”对象的可观察集合,它定义了“IsFacturation”属性。
<DataGrid x:Name="AddressGrid" SelectionUnit="Cell" ItemsSource="{Binding Path=Adresses}" SelectionMode="Single">
<DataGrid.Columns>
<!-- Region Facturation -->
<DataGridTemplateColumn Header="Facturation" SortMemberPath="IsFacturation" HeaderStyle="{StaticResource CenterAlignmentColumnHeaderStyle}" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=AddressGrid,Path=IsReadOnly}" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<!-- Possibly create another contentcontrol which differentiates between errors -->
<DataTemplate>
<Image Source="Resources/Images/Check-icon.png" Visibility="Visible"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=AddressGrid,Path=IsReadOnly}" Value="False">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<RadioButton GroupName="grpRadioButtonFacturationAddresses"
IsChecked="{Binding Path=IsFacturation, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="Visible"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这样的代码的目标是当数据网格为只读以显示图像,而当它不是一个单选按钮。我仍然需要处理图像可见性(简单),但单选按钮状态直接链接到我选择的datagrid项目属性。
非常感谢
尝试'“{绑定路径= IsFacturation,UpdateSourceTrigger =的PropertyChanged,模式=双向}”'而不是如果您希望值立即更新。您在列中使用“ContentControl”的目的是什么?除了浪费资源外,它什么都不做 – Sheridan
所以我有不必要的代码来使用我的两个数据触发器?什么是相关的代码来实现相同的行为?感谢您指出这一点。对不起,它不适用于'UpdateSourceTrigger = PropertyChanged',这很奇怪。 –