繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM