Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
C# WPF上下文菜单赢得';不绑定到VIewModel属性_C#_Wpf_Binding_Contextmenu - Fatal编程技术网

C# WPF上下文菜单赢得';不绑定到VIewModel属性

C# WPF上下文菜单赢得';不绑定到VIewModel属性,c#,wpf,binding,contextmenu,C#,Wpf,Binding,Contextmenu,我有一个WPF绑定问题,我无法解决。我有一个ContextMenu模板,其格式如下所示: <ContextMenu x:Key="CopyPasteContextMenu"> <MenuItem Header="AlternateDelete" Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand, Relati

我有一个WPF绑定问题,我无法解决。我有一个ContextMenu模板,其格式如下所示:

<ContextMenu x:Key="CopyPasteContextMenu">
    <MenuItem Header="AlternateDelete"
              Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand, 
              RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
</ContextMenu>
到目前为止,我已经看了一天了,不知道为什么我的绑定不能在上下文菜单上工作,有人知道我遗漏了什么吗


谢谢

相对源不需要在上下文菜单上,而不需要在菜单项上吗?因为您正在检查关联菜单的放置目标

<MenuItem Header="AlternateDelete"
          Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand, 
          RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Mode=OneWay}" />

相对源不需要在上下文菜单上,而不需要在菜单项上吗?因为您正在检查关联菜单的放置目标

<MenuItem Header="AlternateDelete"
          Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand, 
          RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Mode=OneWay}" />


我刚刚做了一个快速测试,发现MenuItems继承了上下文菜单目标的DataContext——例如,如果
PropertyEditorViewModel
是DataTemplate的DataContext,那么如果DataTemplate中的边框,那么在MenuItem中,
命令=“{Binding AlternateDeleteCommand}”
会起作用。如果对绑定失败(或似乎失败)的原因有疑问,请始终向其添加
PresentationTraceSources.TraceLevel=High
。每当绑定更新时,这将在运行时向VS输出窗格吐出许多行调试信息。它会准确地告诉你它正在做什么来找到它的源属性,如果它失败了,它会告诉你在哪里以及为什么。我确实尝试了JM下面建议的方法,并且成功了,所以我将它移回了数据模板,并且在我将相对源设置到上下文菜单后,它仍然有效。谢谢你,艾德!我想你不需要我测试过的那些复杂的东西我给你看的案子。据我所知,绑定到DataContext属性的方法非常复杂。我刚刚做了一个快速测试,发现MenuItems继承了上下文菜单目标的DataContext——例如,如果
PropertyEditorViewModel
是DataTemplate的DataContext,因此,如果DataTemplate中的边框,那么在MenuItem中,
Command=“{Binding AlternatedDeleteCommand}”
将起作用。如果对绑定失败(或似乎失败)的原因有疑问,请始终向其添加
PresentationTraceSources.TraceLevel=High
。每当绑定更新时,这将在运行时向VS输出窗格吐出许多行调试信息。它会准确地告诉你它正在做什么来找到它的源属性,如果它失败了,它会告诉你在哪里以及为什么。我确实尝试了JM下面建议的方法,并且成功了,所以我将它移回了数据模板,并且在我将相对源设置到上下文菜单后,它仍然有效。谢谢你,艾德!我想你不需要我测试过的那些复杂的东西我给你看的案子。据我所知,绑定到DataContext属性的方法非常复杂。
<MenuItem Header="AlternateDelete"
          Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand, 
          RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Mode=OneWay}" />