在WPF中使用RoutedCommands有什么好处

时间:2015-08-12 19:08:45

标签: c# .net wpf routed-commands

我很难看到在WPF中使用自定义路由命令对标准事件有什么好处。

假设我在静态类中声明了一个自定义RoutedCommand,如下所示:

public static readonly RoutedCommand Foo = new RoutedCommand();

要将它连接到UIElement,我会这样做:

CommandBindings.Add(new CommandBinding(Commands.Foo, new ExecutedRoutedEventHandler((x, y) => {

            MessageBox.Show("Something Happend");

        })));

好的,通常以更干净的方式,但我的第一个问题是 - 路由命令如何跟踪此特定UI元素是否具有针对它的CommandBinding? routedcommand是否在整个应用程序树中跟踪命令绑定,直到它在其commandbindings列表中找到具有正确routedcommand的UIElement?

我注意到仍然必须触发此命令,如按钮

btn.Command = Commands.Foo;

我的下一个问题是,仅针对标准事件创建这些routed命令有什么意义?

1 个答案:

答案 0 :(得分:2)

主要的好处是它在使用MVVM时会分离应用程序的不同层。它将代码放在ViewModel中,不会污染您的视图。它还允许命令Bubble向上可视树,以便容器控件可以处理其子命令。

从您的示例代码中我可以看到您并未真正使用MVVM,因此如果您不需要冒泡(或隧道)功能,则使用命令可能无法获得任何好处。