Shi*_*mmy 5 wpf tabcontrol tabitem selectionchanging
遗憾的是没有TabControl.SelectionChanging事件(Selector.SelectionChanging),我正在努力实现这种行为,所以我可以取消更改请求.
我试图处理TabControl.Items.CurrentChanging(Items属性是和ItemCollection)事件设置e.Cancel(的CurrentChangingEventArgs)为true,但UI是使用新选项卡更新的,尽管该项目未在集合中更改.
TabItem当条件不满意时,有没有办法阻止用户切换到不同的?
我不知道为什么会发生这种情况,这让我非常恼火.
但这是我的解决方法:
在下面的示例中,复选框是"锁定"当前选项卡.所以检查意味着用户无法更改标签.
void Items_CurrentChanging(object sender, CurrentChangingEventArgs e)
{
if (checkBox1.IsChecked.Value)
{
var item = ((ICollectionView)sender).CurrentItem;
e.Cancel = true;
tabControl1.SelectedItem = item;
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,发生的是(如果我理解正确的话)可视化树得到更新,但逻辑树却没有.上述方式强制视觉与逻辑树同步.