似乎WPF TabControl
不支持取消选择更改的功能,因为没有SelectionChanging()
事件,只有SelectionChanged
事件。有没有人想出办法做到这一点?
我找到的唯一方法是在每个PreviewMouseLeftButtonDown()
上附加TabItem
个事件,如果我不希望选择该特定页面,请将e.Handled
设置为true
。这似乎有效,但很笨拙。
答案 0 :(得分:0)
我找到了一种方法,使用TabItem的样式,然后将Focusable属性绑定到控制行为的布尔值。获得对父视图模型的绑定有点不稳定,但可能会有所改进。
这很好,因为它避免了点击事件的技巧,如果用户使用键盘,则可能不会触发。
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Focusable" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.IsUpToDate}" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Group}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>