WFP에서 Owner를 지정할 아래와 같이 사용할 수 있다.
Owner = Application.Current.MainWindow;
그런데 WinForm안에 WPF를 이용할 때 WPF의 Dialog Owner를 기존과 같은 방식으로하면 Current가 null 에러가 발생한다. WinForm에서부터 Window Handle을 넘겨 받아 사용할 수도 있지만 아래와 같이 Process에서 Handle을 받아서 처리를 할 수도 있다.
WPFTestView dlg = new WPFTestView();
System.IntPtr iMainHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
System.Windows.Interop.WindowInteropHelper winHelper = new System.Windows.Interop.WindowInteropHelper(dlg);
winHelper.Owner = iMainHandle;
dlg.ShowDialog();
WindowInteropHelper 클래스
설명
이 클래스의 멤버를 사용하면 호출자가 Win32 HWND 및 WPF Window의 부모 HWND에 대한 내부 액세스를 가질 수 있습니다. 적절한 보안 검사는 해당 멤버에 의해 수행됩니다.
HWND를 기반으로 하는 보다 구체적인 개체가 필요할 때마다 이 클래스를 사용합니다.
예제 시나리오는 Win32 애플리케이션에서 WPF 대화 상자를 호스트해야 하는 경우입니다. 대화 상자의 WindowInteropHelper WPF 창 개체를 사용하여 초기화합니다. 그런 다음, 속성에서 Handle WPF 창의 핸들(HWND)을 가져오고 속성을 사용하여 WPF 창의 소유자를 Owner 지정할 수 있습니다. 다음 코드 예제에서는 Win32 애플리케이션에서 WPF 대화 상자를 호스팅할 때 사용하는 WindowInteropHelper 방법을 보여 있습니다.
WindowInteropHelper wih = new WindowInteropHelper(myDialog);
wih.Owner = ownerHwnd;
myDialog.ShowDialog();
'WPF' 카테고리의 다른 글
WPF MVVM Window Close Action 처리 (0) | 2023.06.15 |
---|---|
C# UI Thread 에러 발생할 경우 (0) | 2023.02.13 |
Telerik RadRibbonView Example (리본바 메뉴 예제) (0) | 2022.01.19 |
Telerik Menu 추가 (0) | 2021.12.21 |
Hierarchical RadGridView Example (0) | 2021.09.02 |