我们正在使用一些没有 WPF 等价物的 ActiveX 或 windows 窗体控件,所以自然我们使用 WindowsFormsHost 来托管这些控件。我们通常用一些通用控件(例如按钮)来制作一个 UserControl 来实现通用功能。一段 xaml 代码是这样的:
<WindowsFormsHost Name="windowsFormsHost1" >
<WindowsFormsHost.ContextMenu>
<ContextMenu>
<MenuItem Header="_Test1" />
</ContextMenu>
</WindowsFormsHost.ContextMenu>
<AxOWC:AxPivotTable x:Name="pivotTable" />
</WindowsFormsHost>
....
AxPivotTable 是一个 OWC(办公 Web 组件)控件。在另一个 UserControl 中,我们在 WindowsFormsHost 中添加了一个 ReportViewer。请注意,通常 AxPivotTable 或 ReportViewer 具有其默认上下文菜单,即使我没有添加任何 ContextMenu 项目。
到目前为止,我的自定义 ContextMenu 还没有显示(仍然显示默认的)。感谢这个问题,我发现我仍然需要在代码隐藏中捕获鼠标按下事件并设置
windowsFormsHost1.ContextMenu.IsOpen = True
显示上下文菜单(虽然很奇怪)。
现在我的问题是,现在只有这个 Test1 ContextMenu 在这里。默认的 ContextMenu 将不再显示。正如我所提到的,我们想要的是在这些默认上下文菜单之上添加自定义。