0

(wpfから独自のカスタムMSGBOXを作成しようとしています...)この種のコードを使用せずに別のWPFウィンドウを表示するにはどうすればよいですか?

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

ただし、CODEを減らす方法を見つけましたが、それでも別のインスタンスを作成する必要があります(これはリソースの浪費です)

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 に答える