阻止用户切换TabItem + Nasty bug?

时间:2013-10-02 20:59:32

标签: c# wpf tabcontrol messagebox tabitem

我有一些验证逻辑和一个TabControl。我想阻止用户在当前包含某些错误时切换标签。

我发现有些人问同样的问题,有些人给出了很好的答案,你可以在这里看到。

TabControl- preventing user from changing the selected tab: MessageBox causing bug

然而,正如Fredrik Hedblad所说,当取消选择时显示MessageBox时,整个事情就会崩溃。它经历了一种奇怪的行为。事件停止被提升(显然),如果你最小化并恢复窗口,它突然升起而没有交互!!

有人可以对此有所了解吗?非常感谢!!!

这里我已经设置了一个带有问题的Visual Studio解决方案。它有MainWindow.cs中的代码。真的很简单,但不起作用。尝试两次单击某个选项卡(在对话框显示之后),您会注意到它没有再显示对话框,但如果您最小化并恢复,则会自动显示对话框并选择选项卡!

ZIP File With the Sample solution (Visual Studio 2012

2 个答案:

答案 0 :(得分:1)

在验证逻辑中,将其他TabItem Visibility属性设置为Collapsed
要么是IsEnabled要么是假。

我猜你的验证逻辑中有IsDirty种属性,对吗?然后你们都清楚了!

答案 1 :(得分:0)

尝试使用此代码:

bool isError=true;
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (isError)
            {
                e.Cancel = true;
            }            
        }

当标签页出错时,isError是bool变量集。