2009-09-07 4 views
6

WPF 사용자 정의 컨트롤에서 Modal Window (ElementHost의 자식)를 표시하고 Modal Window의 소유자/부모를 포함하는 Form 컨트롤로 설정할 수 있습니까?WPF ShowDialog 및 ElementHost

Owner 속성은 이전 Windows Forms Form 컨트롤 인 요소 호스트 컨트롤의 부모로 설정하려는 Window의 인스턴스를 사용하므로이 작업을 수행 할 수 없다고 생각합니다. 해결 방법이나 대안적인 접근 방법이 있는지 궁금합니다.

문제는 모달 창이 표시되고 사용자가 다른 응용 프로그램으로 전환 한 다음 다시 돌아가서 모달 창이 숨겨져 있고 사용자가 기본 창과 상호 작용할 수없는 경우입니다. 이것은 윈도우가 모덜 창이 아직 소유자/부모 관계가 설정되지 않았으므로 표시되지 않는다고 생각하기 때문입니다.

환호, 제임스.

답변

8

이 같은 그 문제를 해결하기 위해 WindowInteropHelper을 사용하고 다음을 호스팅을 winform 창을 찾을

var wpfDialog = new MyWpfDialog(); 
var interopHelper = new WindowInteropHelper(wpfDialog) 
     { 
      Owner = winFormsDialog.Handle 
     }; 

wpfDialog.ShowDialog(); 
+0

안녕하세요. 내 문제를 해결했습니다. – ayc

4

나는이 게시물은 오래 알고,하지만 난 길을 가로 질러왔다 ElementHost wpf UserControl의 컨텍스트에서 어디 winform 창에 액세스 할 수 있습니다. 나는 이것이 호스트 윈도우를 통과 할 필요가 없도록 유용하다는 것을 알았다.


HwndSource winformWindow = (System.Windows.Interop.HwndSource.FromDependencyObject(wpfControlInElementHost) as System.Windows.Interop.HwndSource); 
if (winformWindow != null) 
{ 
    var interopHelper = new WindowInteropHelper(wpfWindow) 
    { 
     Owner = winformWindow.Handle 
    }; 
} 
관련 문제