WPF - TabControl - 防止选择更改

时间:2011-01-31 13:22:28

标签: .net wpf wpf-controls tabcontrol

似乎WPF TabControl不支持取消选择更改的功能,因为没有SelectionChanging()事件,只有SelectionChanged事件。有没有人想出办法做到这一点?

我找到的唯一方法是在每个PreviewMouseLeftButtonDown()上附加TabItem个事件,如果我不希望选择该特定页面,请将e.Handled设置为true 。这似乎有效,但很笨拙。

1 个答案:

答案 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>