2011-05-10 46 views
1
打開一個對話窗口

有人可以幫我找出如何打開一個對話窗口,如何使用MVVM

我能想到的最簡單的方案是: 我們有一個主窗口有一個按鈕和一個標籤,

當用戶按下該按鈕,

與文本框的對話框窗口和2個按鈕出現,

一個按鈕提交說,

當用戶按下提交它關閉窗口,

它改變了mainwindows背景紅色的顏色,

和獲取輸入放置在文本框和主窗口上變化的標籤到該內容(我是殭屍這麼多關於這一部分,我要怎麼弄這部分擔憂),

而其他按鈕即可取消操作,

假設主窗口的DataContext的和DialogWindow是MainWindowViewModel和UserInputViewModel respectivily 。

現在關於使用服務,即IDialogService和DialogService 現在可能有人請向我解釋如何實現上面的場景中那些方法this link卡梅倫會談?或者如果有另一種方式來做到這一點,請讓我知道? 請不要將我鏈接到任何頁面,因爲我可能已經閱讀了所有內容,而且我似乎無法清楚地瞭解將要發生的事情? 〜由於MVVM讓事情變得更加困難,所以慢慢地放棄了他的理智:(

+0

你使用任何框架?像棱鏡,MVVMLight或WAF等? – 2011-05-13 18:02:31

+0

您可能對** [WPF應用程序框架(WAF)](http://waf.codeplex.com)**的** EmailClient **(ViewModel)示例應用程序感興趣。它演示瞭如何在MVVM應用程序中顯示模態對話框。 – jbe 2011-05-13 17:27:18

回答

1

不是一個真正的答案,但我想我會加上我的POV。基本上有3個陣營:
(1)使用像你這樣的對話服務的人所描述的,
(2)認爲MVVM好的人,但不是你應該花費無數(3)像我這樣的人,他們認爲往往不是,對話框和父視圖緊密聯繫在一起,他們應該共享視圖模型(as-in,該對話框只是one顯示來自您的視圖模型的數據的方式)。

+0

想要發表評論,但字符限制打我:( – cwap 2011-05-10 22:29:58

+1

共享相同的viewmodel不是好主意,因爲你將結束在視圖模型中加入更多的命令,綁定到不同的視圖導致成堆的垃圾代碼。 – 2011-05-13 17:57:59

1

MVVM的學習曲線在嘗試做比簡單數據綁定更高級的事情時可能稍微陡峭些。你有沒有檢出MVVM Light工具箱?它包括一個Messenger類,便於在該地點發送消息。監聽者註冊他們想要的消息,並且發送者只是發佈他們。以這種方式,聆聽者或發送者都不知道彼此,但可以溝通。這意味着視圖可以註冊一條消息,ViewModel可以發送一條消息。

This question談論做一些非常類似於你想做的事情。順便推薦MVVM Light工具包!

我不知道如何使用對話框的結果將它們發送到ViewModel。我假設你更難的部分是從虛擬機到視圖進行通信。