命令绑定不起作用?

时间:2011-05-20 10:18:15

标签: wpf command

我正在开发一个多标签应用程序(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在运行时创建

2 个答案:

答案 0 :(得分:3)

这是因为ContextMenus是具有自己的VisualTree和LogicalTree的独立窗口。

像这样使用

<MenuItem Header="Cut" Command="Cut" CommandTarget="
          {Binding Path=PlacementTarget, 
          RelativeSource={RelativeSource FindAncestor, 
          AncestorType={x:Type ContextMenu}}}"/>

有关详情,请查看以下链接

http://www.wpftutorial.net/RoutedCommandsInContextMenu.html

答案 1 :(得分:1)

请参阅biju回答,您的ContextMenu的DataContext不是您期望的那个。

如果您将来遇到任何绑定问题,请查看Snoop。它是一个易于使用的工具,可以在运行时检查绑定。

我总是检查两件事:

  • 是我期望的DataContext吗?!
  • 是我想要的那个绑定路径?!