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