如何有条件地完全隐藏 TabControl 的 TabPanel 部分?
How can I conditionally hide the TabPanel portion of a TabControl in its entirety?
我发现这个问题有很多变体,但谈话似乎总是围绕个人 TabItems
,而不是 TabPanel
本身。
我的主 window 上面有一个 TabControl
。选项卡是视图。其中一个视图很特别...导航显示,而所有其他视图都是导航视图可以打开的"sections"。
我想要完成的是,当用户查看导航视图时,所有选项卡都消失了。 IE。隐藏整个 TabPanel
而不是一个接一个地隐藏每个 TabItem
。查看任何其他页面时,将显示选项卡,以便在视图之间轻松移动。
我提出这个问题是为了回应在 my other question 上提出的建议。
我遇到的问题是 TabPanel
似乎没有 Template
我可以覆盖它以执行类似 DataTrigger
绑定到 [=18] 的操作=] 属性。我得到的最接近的是一个普通的旧 Style.Setter
.
关于如何获得我想要的东西有什么建议吗?
基本上您自己提供了答案 - 正确的组合是使用 Style
和 DataTrigger
。诀窍是定义一个 Style
并将 TargetType
设置为 {x:Type TabPanel}
,并将其作为 TabControl
的资源 - 这样样式将应用于 TabPanel
(因为它是 隐式样式)。这是一个例子:
<TabControl (...)>
<TabControl.Resources>
<Style TargetType="{x:Type TabPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedIndex, RelativeSource={RelativeSource AncestorType=TabControl}}"
Value="0">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Resources>
(...)
</TabControl>
在这个例子中,当第一个项目被选中时面板将被折叠。
我发现这个问题有很多变体,但谈话似乎总是围绕个人 TabItems
,而不是 TabPanel
本身。
我的主 window 上面有一个 TabControl
。选项卡是视图。其中一个视图很特别...导航显示,而所有其他视图都是导航视图可以打开的"sections"。
我想要完成的是,当用户查看导航视图时,所有选项卡都消失了。 IE。隐藏整个 TabPanel
而不是一个接一个地隐藏每个 TabItem
。查看任何其他页面时,将显示选项卡,以便在视图之间轻松移动。
我提出这个问题是为了回应在 my other question 上提出的建议。
我遇到的问题是 TabPanel
似乎没有 Template
我可以覆盖它以执行类似 DataTrigger
绑定到 [=18] 的操作=] 属性。我得到的最接近的是一个普通的旧 Style.Setter
.
关于如何获得我想要的东西有什么建议吗?
基本上您自己提供了答案 - 正确的组合是使用 Style
和 DataTrigger
。诀窍是定义一个 Style
并将 TargetType
设置为 {x:Type TabPanel}
,并将其作为 TabControl
的资源 - 这样样式将应用于 TabPanel
(因为它是 隐式样式)。这是一个例子:
<TabControl (...)>
<TabControl.Resources>
<Style TargetType="{x:Type TabPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedIndex, RelativeSource={RelativeSource AncestorType=TabControl}}"
Value="0">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Resources>
(...)
</TabControl>
在这个例子中,当第一个项目被选中时面板将被折叠。