2010-11-16 53 views
5

不幸的是没有TabControl.SelectionChanging事件(Selector.SelectionChanging),我正在努力实现这一行为,所以我可以取消更改请求。有没有办法取消TabControl.Items.CurrentChanging?

我试图处理TabControl.Items.CurrentChanging(该Items属性和ItemCollection)事件设置e.Cancel(在CurrentChangingEventArgs),以真实的,但用户界面是用新的标签更新,虽然该项目没有在集合中改变。

当条件不满时,有什么办法可以防止用户切换到其他TabItem

回答

5

我不知道为什么会发生这种情况的确切原因,它让我非常恼火。

但这里是我为它的解决方法:

在下面的示例,复选框被“锁定”在当前标签。如此检查意味着用户不能更改选项卡。

void Items_CurrentChanging(object sender, CurrentChangingEventArgs e) 
{ 
    if (checkBox1.IsChecked.Value) 
    { 
     var item = ((ICollectionView)sender).CurrentItem; 

     e.Cancel = true; 

     tabControl1.SelectedItem = item; 
    } 
} 

基本上,会发生什么情况是(如果我理解正确此)可视树被更新,但逻辑树没有。上述方式强制视觉与逻辑树同步。

+0

好的。谢谢。 – Shimmy 2010-11-16 23:22:31

相关问题