- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Silverlight 中遇到的主要问题之一是它缺乏强大的命令支持(ala WPF)。更具体地说,我发现很难干净地应用 MVVM 模式并进行合理的封装,因为需要在任何可能影响命令状态的属性上手动调用 RaiseCanExecuteChanged()。
例如,我有一个绑定(bind)到父/子 ViewModel 的父/ subview 。父 View 绑定(bind)到父 View 模型上的命令。父 View 有多个 subview ,每个 subview 都是一个用户控件,其中包含一系列绑定(bind)到 subview 模型的内置控件(文本框、组合框等)。
父命令的状态(即它是否可以执行)基于每个子控件的状态。例如,所有子用户控件的所有文本框都必须具有有效值。这需要这些控件在每次调用 RaiseCanExecuteChanged() 时绑定(bind)的属性,这意味着它们必须了解 ICommand 本身或调用 RaiseCanExecuteChanged() 方法的委托(delegate)。
注入(inject)命令或委托(delegate)对我来说感觉不对,尤其是在比上述更复杂的情况下,例如当有 3 层以上的控件时,这些引用需要一直向下传递到链中。这也需要更多的内务处理,因为每次实例化子对象时,都必须执行添加命令或委托(delegate)的额外步骤。
如果 Silverlight 像 WPF 一样支持 CommandManager.RequerySuggested 功能,这一切都会变得简单得多。
我看过一些文章建议可以在 Silverlight 中实现 RequerySuggested (one such article),但很少看到关于它是否可靠和是否充分执行的评论。
其他人如何解决 Silverlight 的这一限制?
最佳答案
我过去使用的一种方法是使用来自 Laurent Bugnion 的 MVVM Light 框架 (http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx) 的消息传递引擎。
本质上, children 发送一条消息来请求需要命令。可以坐在父级中的监听器响应消息并调用 RaiseCanExecuteChanged()。
我发现 MVVM Light 仅对于消息传递引擎而言是值得的。尽管您必须小心并在处理父 View 时注销监听器。
希望对您有所帮助。
关于银光 4 : Reliable Commanding with RequerySuggested Functionality?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608309/
MSDN 仅声明 Occurs when the CommandManager detects conditions that might change the ability of a comman
我正在尝试测试一个使用 CommandManager.RequerySuggested 的类,并注意到调用 CommandManager.InvalidateRequerySuggested 不会触发
我从 Josh Smith 的 MVVM tutorial 得到以下代码. 任何人都可以快速解释这段代码的实际作用吗? public event EventHandler CanExecuteChan
我在 Silverlight 中遇到的主要问题之一是它缺乏强大的命令支持(ala WPF)。更具体地说,我发现很难干净地应用 MVVM 模式并进行合理的封装,因为需要在任何可能影响命令状态的属性上手动
我是一名优秀的程序员,十分优秀!