我有一个控件,在该控件上是一个名为SaveToClipboardCommand的命令.我想将一个上下文菜单项命令绑定到该命令,以便当我单击它时,执行copy to clipboard命令.
<Control x:Name="Control">
<Control.ContextMenu>
<ContextMenu>
<MenuItem Command={"Bind to SaveToClipboardCommand here"} Header="Some Header" />
</ContextMenu>
</Control.ContextMenu/>
</Control>
Run Code Online (Sandbox Code Playgroud)
控件(为了论证)定义如下:
partial class Control
{
private ICommand _saveToClipboard;
public ICommand SaveToClipboardCommand
{
get
{
if (_saveToClipboard == null)
{
_saveToClipboard = new RelayCommand(
x=> SaveToClipboard());
}
return _saveToClipboard;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用基于RelativeSource和ElementName的绑定,但两者都失败了.我想做什么甚至可能?
谢谢!
Jul*_*uez 19
EDIT(显示控件如何暴露之后):ContextMenu有点棘手,因为它实际上不是同一个可视树的一部分.试着这样做:
<MenuItem Command="{Binding Path=PlacementTarget.SaveToClipboardCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
Run Code Online (Sandbox Code Playgroud)
原始答案
此命令是否作为Control的公共属性公开?如果命令实际暴露在控件的DataContext的ViewModel中,请执行以下操作:
Run Code Online (Sandbox Code Playgroud)Command={Binding ElementName=Control, Path=DataContext.SaveToClipboardCommand}你能说明这个命令目前是如何公开的吗?