2012-10-29 60 views
0

(我試圖創建WPF ......我自己的自定義MSGBOX) 如何顯示另一個WPF窗口,而無需這種代碼如何顯示一個WPF窗口,而無需創建另一個實例

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

但是我有點找到了一種方法,以減少代碼,但我還需要創建另一個實例(這是一種資源的浪費)

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

的ShowBox(字符串味精)方法:

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

我想擺脫「」代碼段(如果這就是你稱呼它)

所以......總之......我想知道如何使一個靜態 WPF Window ...

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

2

你可以簡單地包裹你的代碼的靜態方法類:

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來顯示一個模式對話框,並且此對話框將控制返回到您的代碼,它必須關閉。關閉的窗口無法重新打開,每次都必須創建一個新實例。這應該不是問題。

+0

謝謝..很多!!!!它完全回答了我的問題! –

0

實現一個singleton模式?

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

來電者:

WpfWindow.Instance.ShowDialog(); 
+0

對「ShowDialog」的第二次調用將失敗並出現「InvalidOperationException」。您無法重新打開關閉的窗口,並且在窗口關閉之前,ShowDialog不會返回。 –

+0

我不知道功能限制。這個問題聽起來像是一個單身人士的書外情況。感謝您的領導雖然:) – Yoeri

相關問題