我是一个C#WPF应用程序,它在xaml(P屏幕)中使用网格控件。对于网格中的每一行,我都有一个名为Details的列。点击此列中的项目显示弹出窗口,在xaml(C屏幕)中也有一个网格。 P&#s视图模型中的项目点击事件具有以下代码:
var myChildWindow = new MyGridView();
myChildWindow.Show();
如果用户多次点击该项目,我只想突出显示现有的C弹出窗口。如果没有现有的窗口打开,那么我只想打开一个新窗口。
我已经为Winforms应用程序提出了类似的要求。请问如何为WPF应用程序进行此操作?
感谢。
答案 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;
}