一尘不染

如何在WPF中添加自定义路由命令?

c#

我有一个包含菜单和子菜单的应用程序。我已经将Appliocation命令附加到了某些子菜单项,例如剪切,复制和粘贴。
我还有一些其他菜单项没有应用程序命令。
如何为这些子菜单项添加自定义命令绑定?
我已经阅读了这篇文章,但无法将事件附加到我的子菜单项。


阅读 562

收藏
2020-05-19

共1个答案

一尘不染

我使用放置在Window1类(或窗口类恰好被命名的任何类)之后的静态类,在其中创建RoutedUICommand类的实例:

public static class Command {

    public static readonly RoutedUICommand DoSomething = new RoutedUICommand("Do something", "DoSomething", typeof(Window1));
    public static readonly RoutedUICommand SomeOtherAction = new RoutedUICommand("Some other action", "SomeOtherAction", typeof(Window1));
    public static readonly RoutedUICommand MoreDeeds = new RoutedUICommand("More deeds", "MoreDeeeds", typeof(Window1));

}

使用Window1类所在的名称空间在窗口标记中添加名称空间:

xmlns:w="clr-namespace:NameSpaceOfTheApplication"

现在,我可以像应用程序命令一样为命令创建绑定:

<Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Open" Executed="CommandBinding_Open" />
    <CommandBinding Command="ApplicationCommands.Paste" Executed="CommandBinding_Paste" />
    <CommandBinding Command="w:Command.DoSomething" Executed="CommandBinding_DoSomething" />
    <CommandBinding Command="w:Command.SomeOtherAction" Executed="CommandBinding_SomeOtherAction" />
    <CommandBinding Command="w:Command.MoreDeeds" Executed="CommandBinding_MoreDeeds" />
</Window.CommandBindings>

并使用菜单中的绑定,例如:

<MenuItem Name="Menu_DoSomething" Header="Do Something" Command="w:Command.DoSomething" />
2020-05-19