我有一个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>
如果TabControl
属性更改为IsRunning
,True
应该只切换到第二个标签,但现在的问题是IsRunning
属性更改时,TabControl不会更新自身以显示第二个TabItem
。
有没有办法通过XAML执行此操作,还是必须在我的viewmodel中实现SelectedIndex
属性,该属性直接绑定到SelectedIndex
的{{1}}?
答案 0 :(得分:0)
这对我来说就像预期一样,如果属性更改为true,则选项卡会切换。也许有一个problem with the binding? (或者我误解了这个问题?)
答案 1 :(得分:0)
这是一个老线索,但是谁知道其他人可能会像我一样寻找答案。
解决方案:只需在TabControl样式中添加一个setter,即可将SelectedIndex设置为初始值。例如Setter Property =“SelectedIndex”Value =“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>