我们正在创建一些WPF UserControl,它将使用WindowsFormsHost使用一些WinForms或ActiveX控件。例如,在一个UC中,我们有这样的代码:
<WindowsFormsHost Name="windowsFormsHost1" Height="Auto" MinHeight="400" MinWidth="400">
<viewer:ReportViewer x:Name="viewerInstance" />
</WindowsFormsHost>
,其中ReportViewer可以在Microsoft.Reporting.WinForms中找到。
在另一个UC中,代码是这样的:<WindowsFormsHost Name="windowsFormsHost1" Height="Auto" MinHeight="400" MinWidth="400">
<AxOWC:AxPivotTable x:Name="pivotTable" />
</WindowsFormsHost>
在AxMicrosoft.Office.Interop.Owc11
中可以找到ax透视表ReportViewer和AxPivotTable控件都有自己的上下文菜单,其中包含许多使用功能。我想保留它们。但是我还需要添加一些新的函数。换句话说,我想设计一个增强的上下文菜单,默认上下文菜单是其中的一部分,而我的自定义菜单项是其他部分。
问题来了:我真的不知道在哪里添加我的自定义上下文菜单项。我试图添加一个上下文菜单对象到WindowsFormsHost。但结果是这个自定义菜单根本不会显示。我进一步将WindowsFormsHost.ContextMenu.IsOpen设置为true,这次的结果是我的自定义菜单将遮蔽控件的默认上下文菜单。
我还尝试从代码隐藏中添加菜单项。例如,ReportViewer派生自WindowsForms(而不是WPF程序集),它有一个名为ContextMenu的成员。但是当我检查viewstance。contextmenu。MenuItems,我看到它实际上有零计数集合,这意味着默认的上下文菜单不存在于这一层。那么我如何才能找到默认的上下文菜单并添加自定义菜单项呢?
不能将WPF内容与非WPF内容重叠(除非使用D3DImage)