Silverlight Toolkit имеет прекрасный ContextMenu, который может использоваться несколькими экземплярами элементов управления, такими как Textbox.Совместное использование может быть результатом объявления ContextMenu в контейнере, который также содержит другие элементы управления.
<StackPanel>
<TextBox x:Name="box1" Text="{Binding str1}" />
<TextBox x:Name="box2" Text="{Binding str2}" />
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu Name="cm">
<toolkit:MenuItem Name="cmiCut" Header="Cut" />
<toolkit:MenuItem Name="cmiCopy" Header="Copy" />
<toolkit:Separator/>
<toolkit:MenuItem Name="cmiPaste" Header="Paste" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</StackPanel>
Совместное использование также может быть достигнуто с помощью вызова ContextMenuService.SetContextMenu.
Когда ContextMenu используется совместно, для обработчика событий очень полезно знать, какой элемент управления был нажат правой кнопкой мыши, чтобы открытьContextMenu (например, контекст).Может ли кто-нибудь предложить эффективный способ сделать это?
Для сравнения, эта потребность решается на других платформах следующим образом:
- В ContextMenu WPF есть ContextMenu.PlacementTarget
- ContextMenuStrip WinForms имеет ToolStripItem.Owner.SourceControl
Спасибо,
Билл