-1

在下面的标记中,我将上下文菜单用于分层模板中的树视图节点。问题是我想将上下文菜单项绑定到单个命令,但是由于我使用的是上下文菜单项样式,因此没有其他方法可以将命令绑定到菜单项。我如何将它们绑定到视图模型根目录中定义的命令。

 <HierarchicalDataTemplate  x:Key="NodeTemplate">
            <StackPanel Orientation="Horizontal">
                <StackPanel.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Copy">
                        </MenuItem>
                        <MenuItem Header="Paste">
                        </MenuItem>
                        <ContextMenu.ItemContainerStyle>
                            <Style TargetType="MenuItem">
                                <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.Copy}"/>
                                <Setter Property="CommandParameter" Value="{Binding Tag}"/>
                            </Style>
                        </ContextMenu.ItemContainerStyle>
                    </ContextMenu>
                </StackPanel.ContextMenu>
                <TextBlock Text="{Binding Path=Label}" Style="{StaticResource TreeTextStyle}" ToolTip="{Binding Path=Description}" Tag="{Binding Path=Tag}">
                </TextBlock>
            </StackPanel>
</HierarchicalDataTemplate>
4

1 回答 1

0

为什么不只是:

<MenuItem Header="Copy" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.Copy}>

编辑:你是对的,它不起作用,因为它是一个 ContextMenu,并且一个 ContextMenu 被绘制在其PlacementTarget元素的可视树之外,因此FindAncestor不起作用。尝试以下操作:

Command="{Binding Path=DataContext.Copy, Source={x:Reference view}"/>

确保您给出x:Name="view"实际视图。

于 2012-11-19T01:39:06.953 回答