我有一个绑定到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()之间的路径(绝望地),但是当组合框具有&#34;恢复&#34;时,我没有获得用于更改其可见性的复选框。作为它的选择。我是否应该在Enum中对Combobox进行任何更改?如果没有,我还有什么其他的错误?
答案 0 :(得分:1)
我愿意打赌你已经在XAML的Visibility
上设置了CheckBox
:
<CheckBox
Visibility="Collapsed"
>
但是,由于WPF中的Dependency Property Value Precedence规则,它将覆盖Style中发生的任何事情。这是设计的,当你仔细考虑所有的影响时,这并不是一个坏主意,但它会咬住所有对WPF不熟悉的人。
这是一个简单的修复:只需在样式中的Setter中设置起始值即可。风格的作用,风格可以撤消。
<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>