6

我有一个标签页,如果属性 (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 解释了这个错误。有没有一种干净的方法来做我想要在这里实现的目标?

4

2 回答 2

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>
于 2008-11-19T15:51:52.287 回答
0

好吧,你不能使用触发器来做到这一点(除非你在 DataTemplate、ControlTemplate 或 Style 中)。

您可以使用绑定来执行此操作,您需要编写一个自定义 ValueConverter,它将在 0/1 到 Visible/Hidden 之间转换,然后您可以将 Visibility 属性绑定到 BlhaType 属性。

或者您可以在代码中设置可见性并放弃基于 XAML 的方法(我会这样做)。

于 2008-11-19T15:49:32.417 回答