2010-06-05 104 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.最後上,你可以添加到集合,在關閉您需要從單身列表中刪除窗口中的窗口,你可以這樣做處理窗口的關閉事件

我不有我寫在這裏的代碼,但我希望它可以幫助。