我在自定义 MVVM WPF 应用程序中重新托管 WF4 工作流设计器,按照 Maurices出色的博客文章的思路
但我不知道如何将剪切、复制、粘贴、撤消、重做(我想在主菜单中显示)等应用程序命令绑定到设计器。像 Ctrl-X 这样的键盘绑定开箱即用,但我想让我的 MenuItems 做同样的事情。这里有什么帮助吗?
在主菜单栏中选择 Edit->Copy 应该将当前选定的活动复制到剪贴板,就像 Ctrl-C 一样。这有可能吗?
编辑1:
如果我只是添加一般应用程序命令,例如
MenuItem Header="Cu_t" Command="Cut" />
我得到一个始终禁用项目的菜单:
编辑2:
一般的命令绑定似乎没问题。如果我在文本框中选择一些文本(在我的应用程序的设计器表面之外,甚至在活动内部),菜单项将启用并按预期工作:
-->
但是,如果我选择整个活动并想要剪切/复制..它,菜单项都会变暗 - 尽管键盘绑定按预期工作,并且在内置上下文菜单中启用了这些项目:
上下文菜单:
但主菜单:
所以这不是菜单项的普遍问题,它与工作流设计器密切相关。在http://msdn.microsoft.com/en-us/library/system.windows.input.applicationcommands.copy.aspx我们可以阅读
当 CommandTarget 未设置时,命令的目标是具有键盘焦点的元素。如果具有键盘焦点的元素不支持粘贴命令或当前无法执行粘贴命令(例如剪贴板为空),则 MenuItem 将灰显。
在这种情况下,工作流设计者具有焦点,并且可以执行剪切,但仍然显示为灰色。这是否意味着工作流设计器根本不支持应用程序命令?
编辑3:
另一个非常奇怪的发现。I added the "Delete" Command to the menu, and this one does get enabled when an activity is selected. 单击此菜单项确实会从设计器表面删除活动。
<MenuItem Header="_Delete" Command="Delete" />
所以它与剪切/复制/过去命令完全不一致......