我是WPF MVVM的新手。有人清除WPF中MVVM应用程序中的行为用法吗?为什么我们应该去行为,即使我们在WPF MVVM中有方法操作?
答案 0 :(得分:6)
行为是您附加到元素的事物,并指定应用程序何时应该响应。
Action附加到行为上,并定义应用程序在触发行为时应该执行的操作。
乍一看,行为看起来与行动类似:一个独立的行为 功能单位。主要区别在于行动期望 被调用,并且在被调用时,它们将执行一些操作。一个 行为没有调用的概念;相反,它起作用 更多作为对象的附加组件:可选的可选功能 如果需要,附加到对象。它可能做某些事情作为回应 从环境刺激,但不能保证 用户可以控制这种刺激是什么:它取决于行为 作者确定可以和不可以定制的内容。
使用行为可以封装多个相关或依赖的活动 在单个可重复使用的单元中加上状态。
答案 1 :(得分:0)
在MVVM中,如果ViewModel公开方法而不是命令,则可能需要从View调用方法。行为允许这样做。
您声明“我们在WPF MVVM中有方法操作”,但据我所知,“方法操作”不是WPF的一部分。如果您正在使用辅助MVVM库,它可能会提供“方法操作”,可以将方法封装在命令中。在这种情况下,使用方法的MVVM模式不需要行为。
但请注意,这些行为在MVVM之外还有其他用途。
答案 2 :(得分:0)
我强烈建议您阅读此code project article
演示
- 什么是附加行为
- 它的替代品是什么?
- 与类似问题的替代解决方案相比,它具有优势
我们的想法是在元素上设置附加属性,以便您可以从暴露附加属性的类中访问该元素。一旦该类可以访问该元素,它就可以在其上挂钩事件,并且为了响应这些事件触发,使元素执行通常不会执行的操作。它是创建和使用子类的一种非常方便的替代方法,并且非常适合XAML。
上述文章的结论
在对象上挂钩事件并在触发时执行某些操作 当然不是一个突破性的创新,任何一段时间 想像力。从这个意义上讲,附加行为只是另一种方式 做同样的旧事。但是,这种技术的重要性在于 它有一个名字,这可能是任何一个最重要的方面 设计模式。此外,您还可以创建附加的行为和 将它们应用于任何元素而无需修改任何其他部分 系统。它是解决Pascal引发的问题的一个干净的解决方案 Binggeli,以及许多其他问题。这是一个非常有用的工具 有你的工具箱。