我尝试将参数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}"
但这不是我需要的。
答案 0 :(得分:1)
我终于解决了它:
CommandParameter="{Binding
Path=PlacementTarget.SelectedItems,
RelativeSource=
{RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}
}"
重要的是指定PlacementTarget
。