【问题标题】:context menu command for treeview item node树视图项节点的上下文菜单命令
【发布时间】:2012-11-06 20:53:28
【问题描述】:

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

 <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>

【问题讨论】:

    标签: wpf xaml command contextmenu


    【解决方案1】:

    为什么不只是:

    <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"

    【讨论】:

    • 由于某种原因无法正常工作。这方面的帖子已经很少了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多