C# 限制打开重复对话框

C# 限制打开重复对话框,c#,wpf,C#,Wpf,我有一个WPF父-子应用程序,父窗口是ribbon窗口,单击ribbon按钮,子窗口将打开 要打开窗口代码,请执行以下操作: MyWindow uiObj=new MyWindow(); ShowWindow(uiObj, this); 我已经写了这个函数,因为这将是在单独的dll,它不应该是特定于任何特定的用户界面 public void ShowWindow(Object Obj, Object ObjThis) { Window winObj = (Window)Obj;

我有一个WPF父-子应用程序,父窗口是ribbon窗口,单击ribbon按钮,子窗口将打开

要打开窗口代码,请执行以下操作:

MyWindow uiObj=new MyWindow();
ShowWindow(uiObj, this);
我已经写了这个函数,因为这将是在单独的dll,它不应该是特定于任何特定的用户界面

public void ShowWindow(Object Obj, Object ObjThis)
{
    Window winObj = (Window)Obj;
    winObj.Owner = (Window)ObjThis;
    winObj.ShowInTaskbar = false;
    winObj.Show();            
}
我需要什么: 每当单击同一个按钮时,我想检查窗口是否打开,然后再打开

我不能将我的UI类声明为

MyWindow uiObj;

并传递给我的功能

ShowWindow(uiObj, this);
因此,在执行“new”和“null”等检查后,窗口对象将被传递


我相信会有更好的解决方案。

您可以捕获事件:关闭/显示:

MyWindow uiObj=new MyWindow();
uiObj.Closing+={windowsOpened = false;}
uiObj.Shown+={windowsOpened = true;}
public void ShowWindow(Object Obj, Object ObjThis)
{ 
if(windowsOpened)return;
...

只要子窗口打开,是否需要使用父窗口?或者你能挡住它吗?看一看
MyWindow uiObj=new MyWindow();
uiObj.Closing+={windowsOpened = false;}
uiObj.Shown+={windowsOpened = true;}
public void ShowWindow(Object Obj, Object ObjThis)
{ 
if(windowsOpened)return;
...