我正在开发一个使用 AvalonDock 同时打开多个文档的程序。还有一个公共功能区,顶部有一些常用按钮,如下所示:
现在,可以通过单击 ContextMenu 中的 MenuItems 来使用 Cut,Copy,Paste,Delete
。
但是,当我想将这些命令绑定到功能区中的按钮时会出现一些问题。
模仿AvalonDock的例子,我的XAML是
<DockingManager DocumentsSource="{Binding Documents}" activeContent="{Binding activeDocument,Mode=TwoWay}">
<DockingManager.LayoutItemTemplateSelector>
<local:PanesTemplateSelector>
<local:PanesTemplateSelector.ShapesDocumentTemplate>
<DataTemplate>
<view:ShapesDocument/>
</DataTemplate>
</local:PanesTemplateSelector.ShapesDocumentTemplate>
</local:PanesTemplateSelector>
</DockingManager.LayoutItemTemplateSelector>
</DockingManager>
我的 C# 是:
public ObservableCollection<ShapesDocumentViewModel> Documents { get; set; } = new ObservableCollection<ShapesDocumentViewModel>();
所以 activeDocument
是一个 ViewModel
。
在我的 ShapesDocument
中,有一个 CanvasEx
带有 Cut_Executed
,Copy_Executed
...
那么,如何绑定 CommandTarget?或者有什么方法可以将 Executed
移动到 ViewModel 中?
<Button Command="{x:Static ApplicationCommands.Cut}" CommandTarget="{Binding ???}"/>