它是内置的。当您设计自己的命令时,您必须在控件的声明标记中包含命名空间,然后使用您选择的命名空间标记引用命名空间和命令。
这是我的一个使用 Helix 3D Toolkit 库的 UserControl 的示例。在控制声明中,我包括:
<dxr:DXRibbonWindow
x:Class="Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
[etc...]
xmlns:h="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf"
使用在该命名空间中实现的命令只需像这样声明它们:
<Button Content="Left View"
Command="{x:Static h:CameraController.LeftViewCommand}" />
然后库中的h:CameraController
类定义一个静态 ICommand 属性来处理命令:
public static RoutedCommand LeftViewCommand = new RoutedCommand();
在该类的构造函数中是以下代码:
this.CommandBindings.Add(new CommandBinding(LeftViewCommand, this.LeftViewHandler));
...它为 XAML 系统提供了一个基于实例的绑定来使用。在您的 CommandBindings XAML 片段中,它看起来像这样:
<UserControl.CommandBindings>
<CommandBinding Command="h:CameraController.LeftViewCommand"
Executed="SomeExecuteMethodInCodeBehind"
CanExecute="SomeExecuteTestInCodeBehind"/>
</UserControl.CommandBindings>
因此,要概括地回答您的问题,您必须将命令放在命名空间中,在 XAML 标记中引用命名空间,并在代码或 XAML 声明中提供绑定。