1

我们正在创建一些 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>

AxPivotTable 可以在 AxMicrosoft.Office.Interop.Owc11 中找到

ReportViewer 和 AxPivotTable 控件都有自己的上下文菜单,其中包括许多使用功能。我想保留它们。但我还需要添加一些新功能。换句话说,我想设计一个增强的上下文菜单,默认上下文菜单是其中的一部分,而我的自定义菜单项是其他部分。

问题来了:我真的不知道在哪里添加我的自定义上下文菜单项。我试图将上下文菜单对象添加到 WindowsFormsHost。但结果是这个自定义菜单根本不会显示。我进一步将 WindowsFormsHost.ContextMenu.IsOpen 设置为 true,这一次的结果是我的自定义菜单将隐藏控件的默认上下文菜单。

我还尝试从代码隐藏中添加菜单项。例如,ReportViewer 派生自 WindowsForms(不是 WPF 程序集),它有一个名为 ContextMenu 的成员。但是当我检查 viewInstance.ContextMenu.MenuItems 时,我发现它实际上有零计数集合,这意味着默认上下文菜单在这个级别上不存在。那么我怎样才能找到默认的上下文菜单并添加我的自定义菜单项呢?

4

1 回答 1

0

您不能将 WPF 内容与非 WPF 内容重叠(除非您使用的是 D3DImage)

于 2013-03-15T14:36:40.550 回答