2010-07-10 35 views
0

我有一個控件很少的Silverlight頁面,所有的行爲都不是數據綁定。例如,RichTextBox是Text屬性的數據綁定。但是像Bold,Italic,Numbered等控件行爲是由控件上方的工具欄中的按鈕單擊事件驅動的。這些控件確實會更改數據的值,但不會實際保存/檢索數據。那麼,在Silverlight頁面的代碼隱藏頁面中保留這樣的UI事件比在ViewModel中創建一個ICommand對象可以嗎?在代碼隱藏上使用UI特定事件的MVVM

MVVM表示您的視圖應該與ViewModel進行交互,以便與內部模型進行交互。這裏的視圖只是更新視圖而不是模型。那麼這種事件的代碼隱藏是好的嗎?

回答

1

這種事情可能很主觀,但請記住,ViewModel是視圖的模型,包括視圖顯示方式的設置。我有我的按鈕等連接到ViewModel中的ICommands(google代表「DelegateCommand」或「RelayCommand」作爲示例),而不是View中的命令。我的ViewModel隨後根據需要更新其狀態,並且View響應事件。按鈕點擊通過ViewModel循環,即使虛擬機除View事件以外的其他事件也不做響應(並處理事件的異常和日誌記錄等)。

對於視圖中的複雜行爲,它不影響與它一起工作的數據,當然在代碼隱藏中處理事件是合適的,儘管我通常在用戶控件中發現這種情況,而不是Windows等。