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

前端之家收集整理的这篇文章主要介绍了c# – 在WPF中设置DataTrigger时遇到问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在主视图上有一个ComboBox和一个Button,我想在按钮上应用一个样式,这样当组合框索引设置为1时,按钮变为可见(最初它是隐藏的).这是我的XAML代码
  1. <Grid>
  2. <StackPanel Orientation="Vertical" Margin="10">
  3. <ComboBox Name="comboBox"/>
  4.  
  5. <Button Name="myBtn" Content="Hello" Visibility="Hidden">
  6. <Button.Style>
  7. <Style TargetType="{x:Type Button}">
  8. <Style.Triggers>
  9. <DataTrigger Binding="{Binding ElementName=comboBox,Path=SelectedIndex}" Value="1">
  10. <Setter Property="Visibility" Value="Visible"/>
  11. </DataTrigger>
  12. </Style.Triggers>
  13. </Style>
  14. </Button.Style>
  15. </Button>
  16. </StackPanel>
  17. </Grid>

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

解决方法

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

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

  1. <Button Name="myBtn" Content="Hello">
  2. <Button.Style>
  3. <Style TargetType="{x:Type Button}">
  4. <Setter Property="Visibility" Value="Hidden"/>
  5. <Style.Triggers>
  6. <DataTrigger Binding="{Binding ElementName=comboBox,Path=SelectedIndex}" Value="1">
  7. <Setter Property="Visibility" Value="Visible"/>
  8. </DataTrigger>
  9. </Style.Triggers>
  10. </Style>
  11. </Button.Style>
  12. </Button>

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

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

猜你在找的C#相关文章