为什么不';t我的DataTrigger更新TabControl的SelectedIndex属性
本文关键字:TabControl 更新 SelectedIndex 属性 DataTrigger 我的 为什么不 | 更新日期: 2023-09-27 18:20:43
我有一个TabControl
,它的SelectedIndex
属性绑定到一个布尔值,如下所示:
<TabControl>
<TabControl.Style>
<Style TargetType="TabControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsRunning, UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="SelectedIndex" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Style>
<TabItem Header="Foo" />
<TabItem Header="Bar" />
</TabControl>
如果IsRunning
属性更改为True
,则TabControl
应该只切换到第二个选项卡,但现在的问题是,一旦IsRunning
属性更改,TabControl就不会更新自己以显示第二个TabItem
。
有没有办法通过XAML实现这一点,或者我必须在我的视图模型中实现一个SelectedIndex
属性,该属性直接绑定到TabControl
的SelectedIndex
?
这对我来说正如预期的那样有效,如果属性更改为true,则切换选项卡。也许装订有问题?(或者我误解了这个问题?)
这是一个老话题,但谁知道其他人可能会像我一样偶然发现这个问题,寻找答案。
解决方案:只需在TabControl样式中添加一个setter,即可将SelectedIndex设置为初始值。例如,Setter属性="SelectedIndex"值="0"
<TabControl>
<TabControl.Style>
<Style TargetType="TabControl">
<Setter Property="SelectedIndex" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsRunning, UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="SelectedIndex" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Style>
<TabItem Header="Foo" />
<TabItem Header="Bar" />
</TabControl>