2010-06-19 69 views
0

我在我的Wpf-App(MVVM)中綁定了一個對象並在文本框中顯示對象屬性,因此用戶可以編輯這些屬性的值。 我想用GoF的命令模式實現撤銷/重做功能。 對於這個我需要一個點,我可以創建命令並將其設置爲我的undomanager。 我的想法是添加一個submitbutton。當按下按鈕時,我更新文本框的來源(我的屬性)並創建我的命令對象以使更改可撤銷(保存對象的舊狀態和新狀態)。 但: - 對於使用提交按鈕,我需要將文本框的UpdateSourceTrigger設置爲Explicit。如果我想更新我的源代碼,我需要在我的視圖中引用控件,但據我瞭解,這是不好的。我怎樣才能做到這一點? 對於MVVM,我必須爲SubmitButton創建一個命令(WPF命令,而不是我的undo redo命令),但是我沒有看到如何在不引用文本框的情況下將更改應用於來自該命令的屬性(進一步通過數據類型)。WPF MVVM UpdateSourceTrigger = Excplict

感謝沃爾特

回答

0

我假設你TextBox控件綁定到ViewModel類的屬性。如果您將您的提交按鈕綁定到ViewModel Command,後者又可以向您添加適當的命令Command Pattern Collection並更改ViewModel屬性的某些屬性,則Textbox控件中的值也將更新。現在,當Textbox要更新它的值時,它的屬性的值將更改,ViewModel類需要實現INotifyPropertyChanged接口並從屬性設置器中將該屬性的名稱作爲參數引發PropertyChanged事件。

+0

還有一件事,要從ViewModel類中的命令存儲對象的當前狀態,則不需要對TextBox控件的引用。您可以直接從ViewModel類本身訪問屬性,因爲View實際上已綁定到ViewModel。 – decyclone 2010-06-19 09:20:33