[英]Bind visibility of a control to combobox selection
我有一个绑定到Enum数据类型的组合框。 现在,组合框绑定工作正常,但是当我尝试将复选框的可见性绑定到组合框选择时,此绑定无法正常工作。 我想要做的是,只要组合框选择为“还原”,我都希望复选框可见。 下面是我正在使用的代码。
<CheckBox.Style>
<Style TargetType="CheckBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cmbOperation, Path=SelectedValue}" Value="Restore">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
我尝试更改SelectedValue,SelectedItem,SelectedValue.TosString()之间的路径(无希望),但是无论何时组合框选择“ Restore”时,我都无法通过复选框更改其可见性。 我应该在绑定到组合框的枚举中进行任何更改吗? 如果没有,我还做错了什么?
我敢打赌,您已经在XAML中的CheckBox
上设置了Visibility
:
<CheckBox
Visibility="Collapsed"
>
但是,由于WPF中的依赖项属性值优先级规则,它将覆盖样式中发生的所有事情。 这是设计使然,当您仔细考虑所有含义时,这并不是一个坏主意,但它会伤及WPF新手。
这很容易解决:只需在样式的设置器中设置起始值即可。 样式可以做什么,样式可以撤消。
<CheckBox
>
<CheckBox.Style>
<Style TargetType="CheckBox">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cmbOperation, Path=SelectedValue}" Value="Restore">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.