代码之家  ›  专栏  ›  技术社区  ›  TalentTuner

附加行为与路由命令

wpf
  •  2
  • TalentTuner  · 技术社区  · 15 年前

    2 回复  |  直到 15 年前
        1
  •  3
  •   rudigrobler    15 年前

    附加行为是一种扩展控件而不必对其进行子类化的方法!例如给文本框添加水印,强制文本框只接受某些字符等等。。。通过订阅某些事件或设置属性,您可以对控件执行典型的操作!通过创建一个附加的行为,您只是封装了该功能以供重用!

    routedcommands是一种抽象出执行逻辑的方法,比如点击按钮。。。在WPF中,ICommand的内置实现基本上是遍历可视化树,寻找它可以执行的RoutedCommand!这两者之间真正的巨大区别也在于ICommand只能处理按钮之类的东西。。。如果你需要在点击图片时执行一些逻辑,你不能不创建一个附加的行为!

    同时阅读RelayCommand/DelegateCommand

    将行为附加到对象仅仅意味着让对象做它自己不会做的事情。

    http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx

        2
  •  0
  •   Informagic    8 年前

    在寻找类似的问题时,我遇到了 Chapter 6 of the PRISM 5.0 Handbook ,其中说明了启用命令的控件与行为:

    支持命令的WPF控件允许您以声明方式将控件连接到命令。当用户以特定方式与控件交互时,这些控件将调用指定的命令。例如,对于 Button

    您需要选择何时使用启用命令的控件,何时使用行为,以及使用哪种行为。如果希望使用单一机制将视图中的控件与视图模型中的功能关联起来,或者为了保持一致性,则可以考虑使用行为,即使对于本身支持命令的控件也是如此。

    如果只需要使用启用命令的控件来调用视图模型上的命令,并且对调用命令的默认事件感到满意,则可能不需要行为。类似地,如果您的开发人员或UI设计人员不使用Blend for Visual Studio 2013,则您可能更喜欢启用命令的控件(或自定义附加行为),因为Blend行为需要额外的语法。

    对我来说,这是对行为和命令之间区别的最好的总结。