如何通过数据绑定/触发器有选择地设置TabItem的“可见性”

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解释了这个错误。有没有一种简洁的方法来实现我在这里尝试的功能?
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>

您有一个小错别字... "<Style.Triggers>" 应该是 "</Style.Triggers>" ... 这很好,谢谢! - Timothy Khouri

0

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

你可以使用绑定来实现,你需要编写一个自定义的 ValueConverter 来在 0/1 和 Visible/Hidden 之间进行转换,然后将 Visibility 属性绑定到 BlhaType 属性。

或者你可以直接在代码中设置 Visibility,并放弃基于 XAML 的方法(这也是我会做的)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接