Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 命令绑定不起作用?_Wpf_Command - Fatal编程技术网

Wpf 命令绑定不起作用?

Wpf 命令绑定不起作用?,wpf,command,Wpf,Command,我正在处理一个多选项卡应用程序(例如:多选项卡文本编辑器),其中每个选项卡项都有自己的内容。在tabitem的contextmenu中,他们的菜单项带有一个命令,比如SelectAll命令 运行应用程序后,菜单项始终处于禁用状态,不会执行任何命令 那么,我如何使我的命令绑定工作 代码:: 在TextEditor> <MenuItem Command="local:TextEditor.SelectAllCommand" Header="Select All" /> <User

我正在处理一个多选项卡应用程序(例如:多选项卡文本编辑器),其中每个选项卡项都有自己的内容。在tabitem的contextmenu中,他们的菜单项带有一个命令,比如SelectAll命令

运行应用程序后,菜单项始终处于禁用状态,不会执行任何命令

那么,我如何使我的命令绑定工作

代码::

在TextEditor>

<MenuItem Command="local:TextEditor.SelectAllCommand" Header="Select All" />
<UserControl.CommandBindings>
  <CommandBinding Command="local:TextEditor.SelectAllCommand" 
                  Executed="SelectAll_Executed" CanExecute="SelectAll_CanExecute" />
</UserControl.CommandBindings>

在TextEditor的CommandBindings中>

<MenuItem Command="local:TextEditor.SelectAllCommand" Header="Select All" />
<UserControl.CommandBindings>
  <CommandBinding Command="local:TextEditor.SelectAllCommand" 
                  Executed="SelectAll_Executed" CanExecute="SelectAll_CanExecute" />
</UserControl.CommandBindings>


带有TextEditor的TabItems是在运行时创建的

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

像这样使用

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

有关更多信息,请查看下面的链接


参见biju答案,您的ContextMenu的DataContext不是您所期望的

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

我总是检查两件事:

  • 我的数据上下文就是我期望的吗
  • 我的绑定路径就是我想要的吗
第一个伟大的步骤可能是与共享代码us@SnowbearJIM编译器如果在这里发布代码会很混乱。谢谢这个链接和你的帮助,效果很好。但是XAML编辑器显示一个虚假的“对象引用未设置为对象的实例”。一旦编译并运行,它就可以正常工作,但最好不要在编辑器中显示错误。有办法解决吗?