阻止在 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>
我在 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>