微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在WPF中设置DataTrigger时遇到问题

我在主视图上有一个ComboBox一个Button,我想在按钮上应用一个样式,这样当组合框索引设置为1时,按钮变为可见(最初它是隐藏的).这是我的XAML代码
<Grid>
    <StackPanel Orientation="Vertical" Margin="10">
        <ComboBox Name="comboBox"/>

        <Button Name="myBtn" Content="Hello" Visibility="Hidden">
             <Button.Style>
                 <Style targettype="{x:Type Button}">
                     <Style.Triggers>
                         <DataTrigger Binding="{Binding ElementName=comboBox,Path=Selectedindex}" Value="1">
                             <Setter Property="Visibility" Value="Visible"/>
                          </DataTrigger>
                      </Style.Triggers>
                  </Style>
              </Button.Style>
         </Button>
     </StackPanel>
</Grid>

有人已经问了一个关于这个here的问题,而且我做了几乎相同的事情,但它不起作用,即使索引更改为1,按钮仍然隐藏.最初在后面的代码中填充了comoBox有2件物品.任何帮助表示赞赏.

解决方法

问题是本地设置的依赖项属性值(就像您使用可见性一样)具有比样式触发器设置的优先级更高的优先级.因此,即使触发器被触发,它也不会覆盖您已经设置的值.

简单的解决方案是在样式Setter中设置认值:

<Button Name="myBtn" Content="Hello">
         <Button.Style>
             <Style targettype="{x:Type Button}">
                 <Setter Property="Visibility" Value="Hidden"/>
                 <Style.Triggers>
                     <DataTrigger Binding="{Binding ElementName=comboBox,Path=Selectedindex}" Value="1">
                         <Setter Property="Visibility" Value="Visible"/>
                      </DataTrigger>
                  </Style.Triggers>
              </Style>
          </Button.Style>
     </Button>

现在,您的触发器会在命中时覆盖属性值.

当你在它时,你应该看一下this link,它列出了设置DP值的优先顺序.

原文地址:https://www.jb51.cc/csharp/97779.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐