c# - 如何防止我的对话框多次打开?

标签 c# wpf mvvm

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

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

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

问题:

关闭弹出窗口后,如果我单击当前选项卡中的datagrid行,则会再次显示弹出窗口。

如何防止这种情况发生不止一次?

最佳答案

由于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();         
                }
            }

        }

关于c# - 如何防止我的对话框多次打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15132493/

相关文章:

c# - 如何将头文件 (.h) 文件中的用户定义数据类型导入到 C#

wpf - ListView 项目排序?

wpf - DatePicker DisplayDate 绑定(bind)问题

c# - 我在 WPF 中的哪里放置我的登录逻辑以及如何在 MVVM 中处理它?

c# - 在 mvc 应用程序中发送电子邮件时遇到问题

c# - Azure Web应用程序Asp.NET Core 2错误: An error occurred while starting the application

c# - 替换 proxyAddresses 值

wpf - 如何更改 Xaml AppBarButton (Windows UWP) 的标签位置

c# - 不支持 URI 前缀

wpf - MVVM中的数据模板是否过时?