Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将控件的可见性绑定到组合框选择_C#_Wpf_Combobox_Enums - Fatal编程技术网

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

C# 将控件的可见性绑定到组合框选择,c#,wpf,combobox,enums,C#,Wpf,Combobox,Enums,我有一个绑定到枚举数据类型的组合框。现在combobox绑定工作正常,但当我尝试将复选框的可见性绑定到combobox选择时,该绑定没有按预期工作。我想做的是,每当组合框选择为“还原”时,我希望复选框可见。下面是我正在使用的代码 <CheckBox.Style> <Style TargetType="CheckBox"> <Style.Triggers> <DataTrigger Binding="{Bind

我有一个绑定到枚举数据类型的组合框。现在combobox绑定工作正常,但当我尝试将复选框的可见性绑定到combobox选择时,该绑定没有按预期工作。我想做的是,每当组合框选择为“还原”时,我希望复选框可见。下面是我正在使用的代码

 <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程序员感到厌烦。好的,我会尝试一下,让你知道。谢谢,成功了!!谢谢你的新信息。您是否愿意将您的建议添加为答案,以便我可以接受?谢谢您的建议。这正是我犯的“错误”。