在没有本地样式和代码的IsVisibleChanged上触发IsSelected = true(示例TabItem)

时间:2011-10-17 22:09:24

标签: wpf triggers

当同一个TabControl中的另一个TabItem的可见性发生变化时,如果有任何没有代码的最佳方法是在一个TabItem中触发(并更改其IsSelected = true),那么最好的方法是什么? IsVisibleChanged不是RoutedEvent。我的控件都是从资源设置的,所以我必须尽量避免设置本地样式(以便能够使用Datatriggers)。

目前我只能考虑在代码背后执行此操作:

        private void TabItem1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        TabItem2.IsSelected = true;
    }

谢谢!

1 个答案:

答案 0 :(得分:1)

  

我的控件都是从资源设置的,所以我必须尽量避免设置本地样式

不是一个好理由(至少当这些资源在运行时没有改变时)你可以使用BasedOn,例如

<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
    <!-- ... -->
</Style>

除此之外,您可以使用Blend SDK中的交互性等其他工具,这些工具允许触发独立的样式和所有事件。