0

我有一个 Silverlight 页面,它的控件很少,并且所有行为都不是数据绑定的。例如,RichTextBox 是 Text 属性的数据绑定。但是粗体、斜体、编号等控件行为是由控件上方工具栏中的按钮单击事件驱动的。这些控件确实会更改数据的值,但不会实际保存/检索数据。那么,与在 ViewModel 中创建 ICommand 对象相比,将此类 UI 事件保留在 Silverlight 页面的代码隐藏页面中是否可以?

MVVM 表示您的 View 应该与 ViewModel 进行交互,以便在内部与 Model 进行交互。这里的视图只是更新视图而不是模型。那么此类事件的代码隐藏可以吗?

4

1 回答 1

1

这种事情可能非常主观,但请记住,ViewModel 是视图的模型,包括视图显示方式的设置。我有我的按钮等连接到 ViewModel 中的 ICommands(例如谷歌的“DelegateCommand”或“RelayCommand”),而不是视图中的命令。然后,我的 ViewModel 会根据需要更新其状态,并且 View 会响应事件。按钮单击循环通过 ViewModel,即使 VM 除了触发事件以供 View 响应(并为事件处理异常和日志记录等)之外什么也不做。

对于视图中不影响它所使用的数据的复杂行为,那么在代码隐藏中处理事件当然是合适的,尽管我通常发现这是用户控件的情况,而不是窗口等。

于 2010-07-10T10:30:53.117 回答