gpt4 book ai didi

WPF TabControl - 当 TabItem 可见性更改时选择不同的选项卡

转载 作者:行者123 更新时间:2023-12-02 00:11:59 26 4
gpt4 key购买 nike

我有一个TabControlUserControl上由 ViewModel 和 Visibility 支持选项卡项目之一绑定(bind)到 ViewModel 上的属性。

<TabControl x:Name="myTabControl">
<TabItem Header="Tab 1" />
<TabItem Header="Tab 2" Visibility="{Binding HasData, Converter={StaticResource boolToVisibilityConverter}}"/>
</TabControl>

Visibility TabItem的更改时,它会折叠(隐藏)TabItem标题,但它继续显示其内容。

我想要TabControl 当其他选项卡隐藏时切换到可见选项卡,并且有点惊讶地发现它不会自动发生。

将事件处理程序附加到 SelectionChanged事件TabControl显示TabItem.IsSelected (和 TabControl.SelectedItem )在 TabItem.Visibility 时甚至不受影响。更改(这是一个错误吗?!)。

我已经尝试过属性触发器:

    <!-- This doesn't compile because of TargetName on the Setter, think you can only use it in Control Templates.
I don't know how to refer to the parent TabControl from within the TabItem style. -->
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Collapsed">
<Setter TargetName="myTabControl" Property="SelectedIndex" Value="0" />
</Trigger>
</Style.Triggers>
</Style>
</TabControl.ItemContainerStyle>

数据触发器:

    <!-- This doesn't quite work, it affects the Visibility of the TabItem's content too -->
<TabControl.Style>
<Style TargetType="{x:Type TabControl}" BasedOn="{StaticResource {x:Type TabControl}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItem.Visibility, ElementName=tabControl}"
Value="Collapsed">
<Setter Property="SelectedIndex" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Style>

我无法让触发器工作,并且没有 VisibilityChanged我可以处理的事件,所以我有点陷入困境,希望得到一些帮助。

最佳答案

TabItem 类有一个可以使用的 IsVisibleChanged 事件。

关于WPF TabControl - 当 TabItem 可见性更改时选择不同的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com