【发布时间】:2011-04-22 04:09:30
【问题描述】:
我有一个控件,该控件上有一个名为 SaveToClipboardCommand 的命令。我想将上下文菜单项命令绑定到该命令,以便在单击它时执行复制到剪贴板命令。
<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 的绑定,但都失败了。我想要做的甚至可能吗?
谢谢!
【问题讨论】:
-
你试过什么RelativeSource?你试过 FindAncestor 吗?
-
{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Control}}, Path-SaveToClipboardCommand} -
您是否尝试将控件的上下文菜单绑定到控件中定义的命令?如果是这样,那么您应该在该控件的 XAML 中进行绑定并将其 DataContext 设置为“this”。如果您绑定到“控制”类范围之外的命令成员,则 DataContext 应该拥有它以便解决它。