我遇到了一个我无法弄清楚的WPF绑定问题。我有一个ContextMenu模板,其格式如下所示:
<ContextMenu x:Key="CopyPasteContextMenu">
<MenuItem Header="AlternateDelete"
Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand,
RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
</ContextMenu>
在DataTemplat中使用了上下文菜单,并且Border上的Tag的绑定正确地找到了PropertyEditorView,我无法从边框到上下文菜单。
<DataTemplate x:Key="PropertyValueCellViewingTemplate" DataType="viewModels:IConfigurationItemViewModel">
<Border x:Name="ValueCellBorder"
Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type views:PropertyEditorView}}}"
ContextMenu="{StaticResource CopyPasteContextMenu}"
Style="{StaticResource PropertyGridValueCellBorderStyle}">
(...)
</Border>
</DataTemplate>
标记可以正确绑定到我的视图模型,称为“PropertyEditorViewModel”。我可以在可视化树中调试系统时看到这一点。当我钻进我的上下文菜单时,绑定没有正确发生。
要使我的Command工作,我需要它正确绑定到名为“AlternateDeleteCommand”的Command to PropertyEditorView视图模型命令。
public class PropertyEditorViewModel : DisposableViewModelBase, IPropertyEditorViewModel
{
public ICommand AlternateDeleteCommand { get; set; }
到目前为止看了一天,并且不确定为什么我的绑定没有在上下文菜单上工作,任何人都得到了我缺少的东西?
谢谢!
答案 0 :(得分:0)
相关来源是否需要在上下文菜单中而不是在菜单项上?由于您正在检查上下文菜单的放置目标?
<MenuItem Header="AlternateDelete"
Command="{Binding Path=PlacementTarget.Tag.DataContext.AlternateDeleteCommand,
RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Mode=OneWay}" />