2013-03-15 2 views
1

WindowsFormsHost를 사용하여 일부 WinForms 또는 ActiveX 컨트롤을 활용하는 WPF UserControl을 만듭니다.WPForm의 WinForm/ActiveX (WindowsFormsHost에서 호스팅되는) 컨트롤의 컨텍스트 메뉴에 컨텍스트 메뉴 항목을 추가하는 방법

<WindowsFormsHost Name="windowsFormsHost1" Height="Auto" MinHeight="400" MinWidth="400"> 
    <viewer:ReportViewer x:Name="viewerInstance" /> 
</WindowsFormsHost> 

의 ReportViewer는 Microsoft.Reporting.WinForms에서 찾을 수있다 : 예를 들어, UC에서 우리는 코드가 있습니다.

다른 UC에서 코드는 다음과 같다 다음 AxPivotTable이 AxMicrosoft.Office.Interop.Owc11

에 모두의 ReportViewer와 AxPivotTable 컨트롤을 찾을 수 있습니다

<WindowsFormsHost Name="windowsFormsHost1" Height="Auto" MinHeight="400" MinWidth="400"> 
    <AxOWC:AxPivotTable x:Name="pivotTable" />    
</WindowsFormsHost> 

에는 자신의 상황에 맞는 메뉴를 많은 기능을 사용합니다. 나는 그들을 지키고 싶다. 그러나 나는 또한 새로운 기능을 추가 할 필요가있다. 다른 말로하면 기본 컨텍스트 메뉴가 포함 된 향상된 컨텍스트 메뉴와 다른 부분 인 사용자 지정된 메뉴 항목을 디자인하려고합니다.

여기에 문제가 있습니다. 사용자 정의 된 컨텍스트 메뉴 항목을 추가 할 위치를 알 수 없습니다. WindowsFormsHost에 컨텍스트 메뉴 개체를 추가하려고했습니다. 그러나 결과적으로이 맞춤 메뉴는 전혀 표시되지 않습니다. WindowsFormsHost.ContextMenu.IsOpen을 true로 설정하고 이번에는 사용자 정의 된 메뉴가 컨트롤의 기본 컨텍스트 메뉴를 섀도 잉합니다.

또한 코드 숨김에서 메뉴 항목을 추가하려고합니다. 예를 들어 ReportViewer는 ContextMenu라는 멤버가있는 WindowsForms (WPF 어셈블리 아님)에서 파생됩니다. 그러나 viewInstance.ContextMenu.MenuItems를 확인할 때 실제로이 숫자에 기본 컨텍스트 메뉴가 없음을 의미하는 0 카운트 컬렉션이 있음을 알 수 있습니다. 그렇다면 어떻게 기본 컨텍스트 메뉴를 찾고 사용자 정의 메뉴 항목을 추가 할 수 있습니까? (당신이 D3DImage를 사용하지 않는 경우)

+0

당신은이 상황에 맞는 메뉴를 확장 할 수 없습니다, 그들은 이러한 컨트롤에 대한 코드 내부에 구운 있습니다. –

답변

0

당신은 비 WPF 콘텐츠와 WPF의 컨텐츠를 겹칠 수 없습니다

+0

답장을 보내 주셔서 감사합니다. 그러나 "중첩"이란 무엇을 의미합니까? 그것은 당신이 정확히 무엇을 의미하는지 모른다 그래서 어떻게 든 흐릿한 단어입니다. 컨트롤은 모두 System.Windows.Forms.Control에서 파생됩니다. 그래서 내 생각은 ContextMenu라는 멤버가있는 Control 개체를 찾아서 사용자 지정 메뉴 항목을 추가하는 것입니다 (WPF 컨텍스트 메뉴를 만들어 공존 시키려고하지는 않습니다). 하지만 문제는 기본 컨텍스트 메뉴가이 레벨에 존재하지 않는다는 것입니다. – tete

+0

질문에 대한 답을 얻으 려합니다. 그리고 그것에 대해 더 많이 생각합니다. 나는 다른 접근법을 제안하려고합니다. 왜 당신의 향상과 함께 winform 컨트롤을 구축하지 winform 컨트롤로 누른 다음 wpf에 포함합니다. – TYY

+0

@TYY ReportViewer 요소 중 기본 ContextMenu 요소가 포함되어 있습니까? ReportViewer.ContextMenu == null이므로이 ContextMenu가 숨겨져있는 것은 재생이 아닙니다. – WiiMaxx

관련 문제