Я пытаюсь использовать свойство IsChecked checkbox checkbox в DataTrigger. Основываясь на значении, я устанавливаю конкретный фон DataGridRow.WPF: Использование checkbox IsChecked свойство в DataTrigger
не мой рабочий код
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="LightGray" />
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=chkbox, Path=IsChecked}" Value="true">
<Setter Property="Background" Value="LightCyan" />
</DataTrigger>
</Style.Triggers>
</Style>
<DataGrid x:Name="dataGrid1" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn MinWidth="40" Width="Auto" Header="Select">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="chkbox" IsChecked="{Binding Selected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Затем я проверил эту link и изменил код, как показано ниже, и она работает fine.Here Выбранный моя общественная собственность.
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="LightGray" />
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Selected}" Value="true">
<Setter Property="Background" Value="LightCyan" />
</DataTrigger>
</Style.Triggers>
</Style>
Пожалуйста, помогите мне понять, почему мой оригинальный код не работает? я что-то пропустил.
google не помогло. Удивительно, что на этом тоже нет нити! Спасибо вам за помощь.
в Можем ли мы использовать FindAncestor и AncestorLevel в эту привязку? – Marshal
@NirajDoshi Я так не думаю, потому что CheckBox - это ребенок DataGridRow, а не предок. Я бы рекомендовал использовать значение привязки в вашем DataTrigger, как и в вашем втором блоке кода. – Rachel
@ Рейчел: имеет смысл. Спасибо за разъяснения. – Marshal