1

我在两个选项卡中有一个数据网格。因此,当第二个选项卡单击时,它应该打开一个过滤器窗口(不是 a <popup>,它是 a <window>)。我这样做如下。

if (tabControl1.SelectedIndex == 1)  {      
     DashboardFilterView filterWindow = new DashboardFilterView();   
     filterWindow.ShowDialog();  }

当我单击窗口的关闭按钮时,它会关闭。

问题

关闭弹出窗口后,如果单击当前选项卡中的数据网格行,将再次显示弹出窗口。

我怎样才能防止这种情况不止一次发生?

4

1 回答 1

2

由于tabControl1_SelectionChanged即使单击网格行也会触发事件,因此我添加了一个检查以确认此事件是否从选项卡发生。

e.OriginalSource is TabControl解决了这个问题。

 private void tabControl1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.OriginalSource is TabControl)
            {
                if (tabControl1.SelectedIndex == 0)
                {
                    // Do something               
                }
                else if (tabControl1.SelectedIndex == 1)
                {  
                    DashboardFilterView filterWindow = new DashboardFilterView();
                    filterWindow.ShowDialog();         
                }
            }

        }
于 2013-03-01T07:38:51.073 回答