阻止在 Wpf 中打开 TabItem

Block opening of TabItem in Wpf

我在 WPF 项目中有一些 TabItem 控件,我需要阻止它们在特定事件发生时打开。基本上,我在进程发生时将布尔变量设置为 true,在进程结束时将其设置为 false,只要 属性 为 true,就无法打开其他 TabItem。我的问题是为什么我没有找到控制TabItem打开的方法。谁能帮我解决这个问题?

使用绑定到 SelectedItem 属性。当它改变调用方法的时间时。

您可以创建自定义 TabControl 并覆盖 OnSelectionChanged 方法:

public class CustomTabControl :TabControl
{
    private bool _handle = true;

    public bool IsSelectable { get; set; } = true;

    protected override void OnSelectionChanged(SelectionChangedEventArgs e)
    {
        if(IsSelectable)
        {
            base.OnSelectionChanged(e);
        }
        else if (_handle && e.RemovedItems.Count > 0)
        {
            _handle = false;
            SelectedItem = e.RemovedItems[0];
            _handle = true;
        }
    }
}

IsSelectable 设置为 false 以防止选择标签:

<local:CustomTabControl IsSelectable="False">
    <TabItem Header="1">
        <TextBox Text="..." />
    </TabItem>
    <TabItem Header="2" >
        <TextBox Text="..." />
    </TabItem>
    <TabItem Header="3">
        <TextBox Text="..." />
    </TabItem>
</local:CustomTabControl>