【问题标题】:How can I selectively set the "Visibility" of a TabItem via DataBinding/Triggers如何通过 DataBinding/Triggers 有选择地设置 TabItem 的“可见性”
【发布时间】:2008-11-19 15:41:16
【问题描述】:

如果属性 (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"

如果您使用 Google 搜索该错误,您会看到 Dr. WPF explains the error。有没有一种干净的方法来做我想要在这里实现的目标?

【问题讨论】:

    标签: wpf data-binding eventtrigger


    【解决方案1】:

    我相信一个控件的 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>
    

    【讨论】:

    • 你有一个轻微的错字...“”应该是“”...这很好,谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-07
      • 2011-04-04
      • 2012-04-07
      • 2021-11-15
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      相关资源
      最近更新 更多