【发布时间】:2011-10-26 22:55:24
【问题描述】:
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(例如上下文)非常有帮助。谁能提供一种有效的方法来做到这一点?
为了比较,这种需求在其他平台中得到了解决,如下所示:
- WPF 的 ContextMenu 有 ContextMenu.PlacementTarget
- WinForms 的 ContextMenuStrip 有 ToolStripItem.Owner.SourceControl
谢谢,
比尔
【问题讨论】:
标签: silverlight-4.0 contextmenu silverlight-toolkit