从上下文菜单项绑定到父控件

时间:2010-10-07 04:15:32

标签: wpf xaml binding

我有一个控件,在该控件上是一个名为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的绑定,但两者都失败了。我想做什么甚至可能?

谢谢!

2 个答案:

答案 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