C# 将控件的可见性绑定到组合框选择
我有一个绑定到枚举数据类型的组合框。现在combobox绑定工作正常,但当我尝试将复选框的可见性绑定到combobox选择时,该绑定没有按预期工作。我想做的是,每当组合框选择为“还原”时,我希望复选框可见。下面是我正在使用的代码C# 将控件的可见性绑定到组合框选择,c#,wpf,combobox,enums,C#,Wpf,Combobox,Enums,我有一个绑定到枚举数据类型的组合框。现在combobox绑定工作正常,但当我尝试将复选框的可见性绑定到combobox选择时,该绑定没有按预期工作。我想做的是,每当组合框选择为“还原”时,我希望复选框可见。下面是我正在使用的代码 <CheckBox.Style> <Style TargetType="CheckBox"> <Style.Triggers> <DataTrigger Binding="{Bind
<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.ToString()之间的路径(没有希望),但每当组合框选择“还原”时,我都无法让复选框更改其可见性。我是否应该对绑定到组合框的枚举进行任何更改?如果没有,我还做错了什么?我敢打赌,您已经在XAML中的
复选框上设置了可见性
:
<CheckBox
Visibility="Collapsed"
>
但是,由于WPF中的规则,这将覆盖样式中发生的任何内容。这是设计的,当你仔细考虑所有的影响时,这不是一个坏主意,但它会咬到每一个新加入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>
复选框是否在XAML中将其可见性属性显式设置为折叠
或隐藏
?如果有,就不要那样做。相反,在复选框样式的另一个setter中设置初始可见性。我会这样做,但这有什么区别?只是想知道它有什么不同,因为显式设置可见性属性会覆盖样式所做的任何事情。这是经过设计的,但它似乎违反直觉,并且会让很多新的WPF程序员感到厌烦。好的,我会尝试一下,让你知道。谢谢,成功了!!谢谢你的新信息。您是否愿意将您的建议添加为答案,以便我可以接受?谢谢您的建议。这正是我犯的“错误”。