如果属性(BlahType)设置为1并且显示为设置为0,则我应该隐藏一个标签页。这是我想要做的事情:
<TabItem Header="Blah">
<TabItem.Triggers>
<DataTrigger Binding="{Binding BlahType}" Value="0">
<Setter Property="TabItem.Visibility" Value="Hidden" />
</DataTrigger>
</TabItem.Triggers>
</TabItem>
问题是,我收到此错误:
"Triggers collection members must be of type EventTrigger"
如果你谷歌那个错误,你会看到Dr. WPF explains the error。有没有一种干净的方式来做我想在这里实现的目标?
答案 0 :(得分:13)
我相信控件的Triggers集合目前仅支持EventTriggers。如果您想使用DataTrigger,只需将其放在样式中,例如:
<TabItem Header="Blah">
<TabItem.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding BlahType}" Value="0">
<Setter Property="TabItem.Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabItem.Style>
</TabItem>
答案 1 :(得分:0)
嗯,你不能使用触发器(除非你在DataTemplate,ControlTemplate或Style中)。
您可以使用绑定来执行此操作,您需要编写一个自定义ValueConverter,它将在0/1之间转换为Visible / Hidden,然后您可以将Visibility属性绑定到BlhaType属性。
或者你可以在代码中设置可见性并放弃基于XAML的方法(我会做的)。