gpt4 book ai didi

wpf - DataTrigger 在 CheckBox 上不起作用

转载 作者:行者123 更新时间:2023-12-05 01:30:56 24 4
gpt4 key购买 nike

我在 WPF 表单中有以下 DataTrigger:

<CheckBox IsChecked="{Binding ConcentratorViewModel.Integrated}">
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="Margin" Value="0,10,0,0"/>
<Setter Property="Width" Value="20"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<!--<Setter Property="IsEnabled" Value="False"/>-->
<!--<Setter Property="IsChecked" Value="False"/>-->

<Style.Triggers>
<DataTrigger Binding="{Binding ConcentratorViewModel.Manufacturer}" Value="ZIV">
<Setter Property="Background" Value="Red"/>
<Setter Property="IsChecked" Value="True"/>
</DataTrigger>

<DataTrigger Binding="{Binding ConcentratorViewModel.Manufacturer}" Value="Landis+Gyr">
<Setter Property="IsChecked" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>

CheckBox 必须被选中或取消选中,具体取决于所选的制造商。我添加了一个转换器来查看触发器上的值,它是正确的。我还添加了 Background 属性,它可以正确更改,但 IsChecked 不起作用。

最佳答案

你需要将 IsChecked 绑定(bind)移动到 Style 中。直接在 Checkbox 上设置它会赋予它优先级,并且触发器无法更改该值。

比如:

<CheckBox>
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="Margin"
Value="0,10,0,0" />
<Setter Property="Width"
Value="20" />
<Setter Property="VerticalAlignment"
Value="Center" />
<Setter Property="IsChecked"
Value="{Binding ConcentratorViewModel.Integrated}" />
<Style.Triggers>
<DataTrigger Binding="{Binding ConcentratorViewModel.Manufacturer}"
Value="ZIV">
<Setter Property="Background"
Value="Red" />
<Setter Property="IsChecked"
Value="True" />
</DataTrigger>
<DataTrigger Binding="{Binding ConcentratorViewModel.Manufacturer}"
Value="Landis+Gyr">
<Setter Property="IsChecked"
Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>

注意:

请记住,通过这样做,您的 Binding 仅在 DataTrigger 的评估结果不为“True”时适用。因此,如果您的 Manufacturer 属性是“ZIV”或“Landis+Gyr”,那么您的 Integrated 属性将不会看到任何 CheckBox 更新,即使使用 TwoWay 绑定(bind),因为它只是没有被使用。

关于wpf - DataTrigger 在 CheckBox 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707177/

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