2010-06-05 47 views
0

在我的应用程序中只有2个窗口 - win_a & win_b,在每个窗口中都有调用另一个窗口的按钮,例如,点击win_a的btn1将调用win_b,点击win_b的btn2将显示win_a。窗口操纵和内定控制

期望的行为: 1.同时只有一个对象实例被预先设置,例如,这种情况下,不允许同时运行2个win_a实例。

  1. 当您点击调用已经存在的窗口的按钮时,此操作只会将焦点更改为需要的窗口。

  2. 如果您调用之前已创建的窗口,但在此窗口关闭后,此操作将创建此窗口的新实例。例如。有2个正在运行的窗口。你关闭其中的一个,并在尝试调用这个窗口后,所以相关的按钮将创建它。

如何在WPF(XAML + C#)中编写它。目前我写了一个版本,可以创建许多同一个窗口的实例(没有实例控件实现的数量),但我只想看到同一个窗口只有一个实例,我们可以在很多应用程序中看到它。我的代码

例子:

Window win = new Window(); 
win.Show(); 

感谢。

回答

0

首先你需要2个参考对方的窗口。点击按钮点击 您需要检查一个参考。 在win_a说

//win_b is a member on Windows_a class 
if(_win_b.IsVisible()) 
{ 
// set focus on it 
} 
else 
{ 
//show win_b 
} 

做出同样的windows_b

+0

谢谢你的回答,但我是WPF和C#的新手,你能提供一个更详细的例子吗? 谢谢。 – user359323 2010-06-05 21:31:55

0

我会建议不同的方法:

  1. 做一个单独的类,保存的元组列表>

  2. 列表
  3. 创建窗口时,您可以检查窗口是否在集合中。

    如果集合包含一个窗口,你可以将它设置ACTIV win.Activate(), 否则你可以创建并添加到集合list.add参考(元组(胜利,“窗口A”))

3.最后上,你可以添加到集合,在关闭您需要从单身列表中删除窗口中的窗口,你可以这样做处理窗口的关闭事件

我不有我写在这里的代码,但我希望它可以帮助。