为什么MVF中的事件和命令不受WPF/Visual Studio支持?

Edw*_*uay 18 wpf events command mvvm

在使用MVVM模式创建WPF应用程序时,似乎我必须自己收集必要的工具,甚至开始最基本的事件处理,例如

  • 我从这里得到的附属行为
  • DelegateCommands我从这里得到

现在我正在寻找一些方法来处理ComboBox中的ItemSelected事件,并获得了一些技巧和变通方法的建议(使用XAML触发器或将其他元素绑定到所选项目等).好吧,我可以走这条路,但它似乎正在重新发明轮子.只有一个我可以在我的ViewModel中处理ItemSelected命令会很好.

我是否缺少一些标准工具,或者每个人都在使用WPF进行MVVM,基本上构建和组合他们自己的工具集合,这样他们就可以使用事件和命令完成最简单的管道任务,这些事情在代码隐藏中只需要几行用Click ="eventHandler"?

Chr*_*l52 16

你对命令的复杂性是正确的.我尝试尽可能地遵循MV-VM模式,但我不能仅仅为了处理简单的用户事件而证明复杂的解决方法.

在我看来,如果能够大大简化您的代码,则可以在View中处理用户事件.如果您在View中处理用户事件,View的代码隐藏应立即调用ViewModel上的方法.这样,你仍然在ViewModel中保留你的逻辑......你只需要在View中有一些管道代码(事件处理程序).我知道MV-VM纯粹主义者认为View的代码隐藏中应该没有代码,但有时候允许一些简单的样板代码(如事件处理程序)更有意义.请记住,其他人可能必须在将来读取/修改您的代码,并且比DelegateCommand更容易理解事件处理程序.

  • +1是一个务实的程序员.如果您在代码中转发来自事件处理方法的调用,那么您就可以分离关注点而无需花哨的解决方法. (6认同)

Cam*_*and 7

根据Josh Smith 关于MVVM 的文章,它于2005年10月在John Gossman的博客上向全世界揭幕.

从那时起我会说WPF/MVVM需要2到2年才能真正起飞并被社区所接受,到那时为时尚早,改装WPF以支持MVVM的问题.另外我会说WPF创建了MVVM,因此似乎已经倒退了WPF更改以支持MVVM.

最后,并非所有做WPF的人都使用MVVM,因此API需要支持事件的标准用法等

所以,回答你的问题,是的,每个人都在将自己的工具集合在一起,因为"官方"支持目前只提供DelegateCommands框架.

  • 大声笑,我喜欢这种"揭开""模式"的想法,好像它是一种产品 (2认同)
  • 微软并没有像使用ASP.NET MVC那样为显式MVVM发布一些内容,这太糟糕了. (2认同)