【发布时间】:2021-03-09 16:06:09
【问题描述】:
我在 WPF 项目中有一些 TabItem 控件,当某个事件发生时,我需要阻止它们打开。基本上,我在进程发生时将布尔变量设置为 true,在结束时设置为 false,只要属性为 true,就无法打开其他 TabItem。我的问题是为什么我没有找到控制 TabItem 打开的方法。谁能帮我解决这个问题?
【问题讨论】:
标签: c# wpf visual-studio wpf-controls tabitem
我在 WPF 项目中有一些 TabItem 控件,当某个事件发生时,我需要阻止它们打开。基本上,我在进程发生时将布尔变量设置为 true,在结束时设置为 false,只要属性为 true,就无法打开其他 TabItem。我的问题是为什么我没有找到控制 TabItem 打开的方法。谁能帮我解决这个问题?
【问题讨论】:
标签: c# wpf visual-studio wpf-controls tabitem
您可以创建自定义 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>
【讨论】:
使用绑定到 SelectedItem 属性。当它改变调用方法的时间时。
【讨论】: