WPF - 的TabControl - 防止选择更改

问题描述 投票:4回答:1

看来,WPF TabControl不支持取消选择变化的能力,因为没有SelectionChanging()事件,只有SelectionChanged事件。有没有人想出一个办法做到这一点?

我发现的唯一方法是附加到每个PreviewMouseLeftButtonDown()TabItem事件,并e.Handledtrue如果我不希望选择特定页面做。这似乎是工作,但非常笨拙。

.net wpf wpf-controls tabcontrol
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.