0
我想在DataTrigger.Based值我設置特定的DataGridRow的背景使用WPF複選框的IsChecked屬性。WPF:在DataTrigger中使用複選框IsChecked屬性
我不工作的代碼
<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>
請幫我理解爲什麼我原來的代碼不工作?我錯過了什麼。
谷歌沒有幫助。令人驚訝的是,也沒有這個線程也!感謝您的幫助。
我們可以使用FindAncestor和AncestorLevel在這種結合? – Marshal
@NirajDoshi我不這麼認爲,因爲CheckBox是DataGridRow的子元素,而不是祖先。我建議在你的DataTrigger中使用綁定值,就像你在第二個代碼塊中一樣。 – Rachel
@Rachel:有道理。感謝澄清。 – Marshal