我有这个上下文菜单资源:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ContextMenu x:Key="FooContextMenu">
<ContextMenu.CommandBindings>
<CommandBinding Command="Help" Executed="{Binding ElementName=MainTabs, Path=HelpExecuted}" />
</ContextMenu.CommandBindings>
<MenuItem Command="Help">
<MenuItem.Icon>
<Image Source="../Resources/Icons/Help.png" Stretch="None" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</ResourceDictionary>
我想在两个地方重复使用它。首先,我试图把它放在一个DataGrid
:
<DataGrid ContextMenu="{DynamicResource FooContextMenu}">...
ContextMenu
本身工作正常,但Executed="..."
我现在有打破应用程序并抛出:
PresentationFramework.dll 中出现“System.InvalidCastException”类型的第一次机会异常
附加信息:无法将“System.Reflection.RuntimeEventInfo”类型的对象转换为“System.Reflection.MethodInfo”类型。
如果我删除整个Executed="..."
定义,那么代码就可以工作(并且命令什么都不做/变灰)。只要我右键单击网格/打开上下文菜单,就会引发异常。
被DataGrid
放置在几个元素下,但最终它们都位于已设置为 s 集合的TabControl
(称为) 之下,并且我有一个我想要被调用的方法。MainTabs
ItemsSource
FooViewModel
FooViewModel
HelpExecuted
让我们形象化:
- 选项卡控件 (
ItemsSource=ObservableCollection<FooViewModel>
,x:Name=MainTabs
)- 网格
- 更多用户界面
- DataGrid(带有上下文菜单集)
- 更多用户界面
- 网格
为什么会出现此错误,如何使上下文菜单命令“定位” FooViewModel
'sHelpExecuted
方法?