在WPF中使用RoutedCommands的好处是什么?

本文关键字:是什么 RoutedCommands WPF | 更新日期: 2023-09-27 18:07:40

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

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

public static readonly RoutedCommand Foo = new RoutedCommand();

要将它连接到一个元素,我可以这样做:

CommandBindings.Add(new CommandBinding(Commands.Foo, new ExecutedRoutedEventHandler((x, y) => {
            MessageBox.Show("Something Happend");
        })));

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

我注意到一些东西仍然需要触发这个命令,像一个按钮

btn.Command = Commands.Foo;

我的下一个问题是,在一个标准事件上创建这些路由命令的意义是什么?

在WPF中使用RoutedCommands的好处是什么?

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

从你的示例代码来看,你并没有真正使用MVVM,所以如果你不需要冒泡(或隧道)功能,你可能不会从使用命令中获得任何好处。