MenuItem + CommandParameter = null!为什么?

时间:2016-10-17 12:20:27

标签: c# xaml

我尝试将参数SelectedItems传递给命令,但参数始终为null。

<sd:SharpTreeView Name="MyTreeView" Margin="10,38,120,10" Root="{Binding Tests}" ShowAlternation="True" SelectionMode="Multiple">
    <sd:SharpTreeView.ContextMenu>
        <ContextMenu>
            <MenuItem
                Header="Copy"
                CommandParameter="{Binding ElementName=MyTreeView, Path=SelectedItems}"
                Command="{Binding CopySelectedTests}" />
        </ContextMenu>
    </sd:SharpTreeView.ContextMenu>
        <ListView.View>
...

我是WPF的新手,所以对我来说,阅读here和其他问题的答案是没有帮助的。它始终保持为空。

我没有在ContextMenu尝试过它并且工作正常,但这不是我想要的。

编辑1

我试过了:

CommandParameter="{Binding Path=UIElement.(sd:SharpTreeView.SelectedItems), RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"

这样:

CommandParameter="{Binding Path=SelectedItems, RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type ContextMenu}}}"

和其他许多人一样,它总是空的。 它只对此不起作用:

CommandParameter="{Binding}"

但这不是我需要的。

1 个答案:

答案 0 :(得分:1)

我终于解决了它:

CommandParameter="{Binding
    Path=PlacementTarget.SelectedItems,
    RelativeSource=
        {RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}
   }"

重要的是指定PlacementTarget