0

(我正在尝试从 wpf 创建自己的自定义 MSGBOX ...)如何在没有此类代码的情况下显示另一个 WPF 窗口

WpfWindow w = new WpfWindow();
w.SetBox("hellow world");
w.ShowDialog();

但是我找到了一种减少代码的方法,但我仍然需要创建另一个实例(这是资源的浪费)

new WpfWindow().ShowBox("hellow world");

ShowBox(string msg) 方法:

public bool? ShowBox()
{
    SetBox(msg);
    return w.ShowDialog();
}

我想摆脱那个“”代码片段(如果这就是你所说的)

所以...总之...我想知道如何制作静态WPF 窗口...

4

2 回答 2

3

您可以简单地将代码包装在类中的静态方法中:

class WpfWindow {

  public static bool? Show(String message) {
    var window = new WpfWindow();
    window.SetBox(message);
    return window.ShowDialog();
  }

}

然后你这样称呼它:

var result = WpfWindow.Show("Hello world");

您可能会反对在每次调用时都会创建一个新的窗口实例,但我认为您无法避免这种情况。您正在使用ShowDialog显示模式对话框,并且此对话框将控制权返回给您的代码,它必须关闭。关闭的窗口无法重新打开,每次都必须创建一个新实例。不过这应该不是问题。

于 2012-10-29T15:21:16.650 回答
0

实现单例模式?

private static WpfWindow _instance;
public static WpfWindow Instance
{
    get
    {
       if(_instance == null) _instance = new WpfWindow();
       return _instance;
     }
} 

呼叫者:

WpfWindow.Instance.ShowDialog();
于 2012-10-29T15:15:20.817 回答