【问题标题】:MVVM with UI specific events on codebehindMVVM 与代码隐藏上的 UI 特定事件
【发布时间】:2011-03-14 05:19:16
【问题描述】:

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

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

【问题讨论】:

    标签: silverlight events mvvm user-interface icommand


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 2016-10-20
      • 2016-01-20
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多