Связывание с элементом контекстного меню на родительский элемент управления
У меня есть элемент управления, в этом элементе управления есть команда SaveToClipboardCommand. Я хочу связать команду контекстного меню с этой командой, чтобы при щелчке по ней выполнялась команда copy to clipboard.
<Control x:Name="Control">
<Control.ContextMenu>
<ContextMenu>
<MenuItem Command={"Bind to SaveToClipboardCommand here"} Header="Some Header" />
</ContextMenu>
</Control.ContextMenu/>
</Control>
Элемент управления (для параметра sake) определяется следующим образом:
partial class Control
{
private ICommand _saveToClipboard;
public ICommand SaveToClipboardCommand
{
get
{
if (_saveToClipboard == null)
{
_saveToClipboard = new RelayCommand(
x=> SaveToClipboard());
}
return _saveToClipboard;
}
}
}
Я попытался использовать привязки RelativeSource и ElementName, но оба они не работают. Является ли то, что я пытаюсь сделать, даже возможно?
Спасибо!
Ответы
Ответ 1
РЕДАКТИРОВАТЬ (после того, как показано, как работает элемент управления):
Хорошо ContextMenu несколько сложно, потому что он фактически не является частью одного и того же визуального дерева. Попробуйте сделать это:
<MenuItem Command="{Binding Path=PlacementTarget.SaveToClipboardCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
Оригинальный ответ
Открыта ли эта команда как общедоступная собственность Контроля? Если команда фактически отображается в ViewModel висит контроль DataContext, чтобы сделать следующее:
Command={Binding ElementName=Control, Path=DataContext.SaveToClipboardCommand}
Можете ли вы показать, как эта команда в настоящее время подвергается?
Ответ 2
Command={Binding ElementName=Control, Path=SaveToClipboardCommand}
НТН