c# – 在WPF中设置DataTrigger时遇到问题
发布时间:2020-12-15 18:10:28 所属栏目:百科 来源:网络整理
导读:我在主视图上有一个ComboBox和一个Button,我想在按钮上应用一个样式,这样当组合框索引设置为1时,按钮变为可见(最初它是隐藏的).这是我的XAML代码: Grid StackPanel Orientation="Vertical" Margin="10" ComboBox Name="comboBox"/ Button Name="myBtn" Cont
我在主视图上有一个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值的优先顺序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |