1

WindowsFormsHost を使用して、いくつかの WinForms または ActiveX コントロールを利用する WPF UserControl を作成しています。たとえば、ある 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 は、ContextMenu というメンバーを持つ WindowsForms (WPF アセンブリではない) から派生します。しかし、viewInstance.ContextMenu.MenuItems を確認すると、実際にはカウント コレクションがゼロであることがわかります。これは、デフォルトのコンテキスト メニューがこのレベルに存在しないことを意味します。では、デフォルトのコンテキスト メニューを見つけて、カスタマイズしたメニュー項目を追加するにはどうすればよいでしょうか?

4

1 に答える 1

0

WPF コンテンツを非 WPF コンテンツと重ねることはできません (D3DImage を使用している場合を除く)。

于 2013-03-15T14:36:40.550 に答える