gpt4 book ai didi

c# - WPF:在 DataTrigger 中使用复选框 IsChecked 属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:37 25 4
gpt4 key购买 nike

我正在尝试在 DataTrigger 中使用 WPF 复选框的 IsChecked 属性。基于我正在设置特定 DataGridRow 背景的值。

我的代码不工作

    <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并如下更改代码,它工作正常。这里 Selected 是我的公共(public)属性(property)。

 <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>

请帮助我理解为什么我的原始代码不起作用?我错过了什么吗?
谷歌没有帮助。令人惊讶的是,在 SO 上也没有线程!感谢您的帮助。

最佳答案

原始代码不起作用,因为您试图通过 ElementName 定位对象,该对象作为模板对象存在,因此直到 绑定(bind)尝试解决。通常,您应该只在引用可视化树中的祖先对象时使用 ElementName,而不是子对象,尤其是模板化的子对象。

如评论中所述,也无法在此处使用 {RelativeSource FindAncestor... 绑定(bind),因为 CheckBox 是子项,而不是祖先, DataGridRow

关于c# - WPF:在 DataTrigger 中使用复选框 IsChecked 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com