我正在开发一个多标签应用程序(For Ex:Multi-Tab Text Editor),其中每个tabitem都有自己的内容。在tabitem的上下文中,它们是带有命令的menuitem,比如SelectAll命令。
运行app后,菜单项始终处于禁用状态,不执行任何命令。
那么,我怎样才能使命令绑定工作?
CODE ::
在TextEditor的上下文菜单中>
<MenuItem Command="local:TextEditor.SelectAllCommand" Header="Select All" />
在TextEditor的CommandBindings中&gt;
<UserControl.CommandBindings>
<CommandBinding Command="local:TextEditor.SelectAllCommand"
Executed="SelectAll_Executed" CanExecute="SelectAll_CanExecute" />
</UserControl.CommandBindings>
带有TextEditor的TabItems在运行时创建
答案 0 :(得分:3)
这是因为ContextMenus是具有自己的VisualTree和LogicalTree的独立窗口。
像这样使用
<MenuItem Header="Cut" Command="Cut" CommandTarget="
{Binding Path=PlacementTarget,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ContextMenu}}}"/>
有关详情,请查看以下链接
答案 1 :(得分:1)
请参阅biju回答,您的ContextMenu的DataContext不是您期望的那个。
如果您将来遇到任何绑定问题,请查看Snoop。它是一个易于使用的工具,可以在运行时检查绑定。
我总是检查两件事: