1
6
掌握他们的优势和劣势,你必须根据自己的情况来选择, 我强烈建议您根据具体情况做出选择,不要为整个项目选择“唯一正确的方法”。 在某些情况下,发送方和接收方之间的分离以及仅使用XAML发送命令的能力是一个很大的优势(对于一个很好的示例,请看滚动条控件模板如何与位于 http://msdn.microsoft.com/en-us/library/ms742173.aspx ) 在其他情况下,命令可以将本来应该是2行的事件处理程序变成一些不可能跟踪的怪兽,包括更改应用程序中的4个独立位置。( How should the ViewModel close the form? ) |
2
3
唯一的原因是拥有熟悉的命令注册表。这意味着事件可能是私有方法,我觉得它们与窗口代码紧密地绑定在一起。同时,命令提供了将实现(事件)和定义(命令)分开的能力,您甚至可以使用另一个类(查看applicationcommands)。 另外,当我进行WPF工作时,我使用ICommand的实现( Command Pattern )命令的所有逻辑都转到执行方法。这有助于我以更结构化的方式保持逻辑分离,避免窗口代码的过度复杂。使用此选项,您可以在模型上创建命令,从而将它们绑定在无噪音的环境中。看一看。 创建模型。
然后分配数据上下文
并使用以下XAML代码。
|
3
2
在开发WPF应用程序时,我尝试遵循Mike所指的命令模式,使用Andy's 2和3方法的组合。 在我的视图中,我只能想到命令的一个缺点:只有某些UI元素的某些操作调用命令。解决此问题的一种方法是让事件处理程序对命令调用Execute方法。我认为命令提供了一种封装执行逻辑的非常好的方法。如果您维护一个很大的UI并使用MVC/MVC/MVVM模式实现它,那么这就变得非常明显。 我鼓励你看看丹·克里维尔的系列 DataModel-View-ViewModel 模式,特别是关于命令和封装命令的部分。即使这个模式不满足您的需求,它也提供了如何在一个单独的类中封装逻辑的一个很好的概述。 |
4
1
ICommand上的其他变体似乎是实现复杂命令结构的常用方法。 布莱恩·诺伊斯 article on PRISM 说 WPF中的路由命令非常强大和有用,但是在应用于复合应用程序时它们有一些缺点。首先,它们完全耦合到可视化树,调用程序必须是可视化树的一部分,并且命令绑定必须通过可视化树进行绑定。…第二个缺点是它们与UI的焦点树紧密相连。 然后继续讨论cal(prism)包含的delegatecommand和computecommand。 |
user180708 · 将日期转换为英文日期 6 年前 |
Anthony Smyth · 如何更改禁用WPF按钮的按钮样式? 6 年前 |
Donat · 在XAML中绑定单例(UWP) 6 年前 |
Amibluesky · 扩展/减少文本块WPF/Xaml中的符号 6 年前 |
smoore4 · 访问代码隐藏中的XAML绑定 6 年前 |