将控件的可见性绑定到组合框选择

时间:2017-05-09 17:31:41

标签: c# wpf combobox enums

我有一个绑定到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进行任何更改?如果没有,我还有什么其他的错误?

1 个答案:

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