在我的应用程序中只有2个窗口 - win_a& win_b,在这些窗口的每一个上都有一个调用另一个窗口的按钮,例如点击win_a的btn1将调用win_b,点击win_b的btn2将显示win_a。
所需行为: 1.同时只允许一个对象实例,例如情况,其中不允许同时运行2个win_a实例。
当您点击调用已存在的窗口的按钮时,此操作只会将焦点更改为所需窗口。
如果您调用之前已创建的窗口,但在此窗口关闭后,此操作将创建此窗口的新实例。例如。有2个运行窗口。你关闭其中一个并在尝试调用此窗口后,所以相关按钮将创建它。
如何在WPF(XAML + C#)中编写它。目前我写了一个可以创建同一个窗口的很多实例的版本(没有实现控制实例的数量),但我想只看到同一个窗口的一个实例,因为我们可以在很多应用程序中看到它
我的代码示例:
Window win = new Window();
win.Show();
感谢。
答案 0 :(得分: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做同样的事情
答案 1 :(得分:0)
我建议采用不同的方法:
制作一个单例类,其中包含元组列表>
创建窗口时,您可以检查窗口是否在集合中。
如果集合中有一个窗口你可以设置它激活win.Activate(), 否则你可以创建它并添加对集合list.add的引用(元组(win,“windowA”))
3.最后在你可以添加到集合的窗口上,关闭时需要从单例列表中删除窗口,你可以这样处理窗口的Close事件
我没有我在这里写的代码,但我希望它有所帮助。