WPF应用程序中的弹出窗口

时间:2017-09-22 16:43:11

标签: c# wpf

我是一个C#WPF应用程序,它在xaml(P屏幕)中使用网格控件。对于网格中的每一行,我都有一个名为Details的列。点击此列中的项目显示弹出窗口,在xaml(C屏幕)中也有一个网格。 P&#s视图模型中的项目点击事件具有以下代码:

var myChildWindow = new MyGridView();
myChildWindow.Show();

如果用户多次点击该项目,我只想突出显示现有的C弹出窗口。如果没有现有的窗口打开,那么我只想打开一个新窗口。

我已经为Winforms应用程序提出了类似的要求。请问如何为WPF应用程序进行此操作?

感谢。

2 个答案:

答案 0 :(得分:1)

首先,您需要在click事件之外声明myChildWindow,以便可以从多个事件中访问它。所以,

MyGridView myChildWindow;

在click事件之外,可能是一个私有变量。

然后,在您的点击事件中查看它是否null,如果是,请创建它。

if (myChildWindow == null)
{
    myChildWindow = new MyGridView();
    myChildWindow.Show();
}

答案 1 :(得分:1)

您可以保留对窗口的引用,并在窗口关闭时摆脱它:

MyGridView  myChildWindow;
private void Button_Click(object sender, RoutedEventArgs e)
{
    if (myChildWindow == null)
    {
        myChildWindow = new MyGridView();
        myChildWindow.Closed += MyChildWindow_Closed;
        myChildWindow.Show();
    }
    else
    {
        myChildWindow.Activate();
    }
}

private void MyChildWindow_Closed(object sender, EventArgs e)
{
    myChildWindow.Closed -= MyChildWindow_Closed;
    myChildWindow = null;
}