2009-03-30 3 views
4

첫 번째 WPF 응용 프로그램을 만들고 System.Windows.Forms 네임 스페이스의 기능을 혼합 할 때 모범 사례가 있는지 이해하고 싶습니다.System.Windows.Forms를 참조하는 WPF 응용 프로그램

기본적으로 사용자 모니터의 오른쪽 하단에 기본적으로 열리는 팝업 창이 있습니다.

WPF 네임 스페이스에서 Screen.PrimaryScreen.Bounds를 찾을 수 없습니다. 내가 본 예제에서는 WPF 응용 프로그램에서 System.Windows.Forms를 참조하는 것이 좋습니다.

이 참조는 기본적으로 포함되지 않는다는 점을 고려하면 나에게이 나쁜 관행이 맞습니까?

이 새 WPF 창을 사용할 수 있도록 기존 Windows Forms 응용 프로그램에서 WPF 필수 리소스를 참조 할 것입니다.

이 방법에 문제가 있습니까?

편집 : 실제로 Windows Forms를 참조하지 않고 주 화면의 정보를 반환하는 속성을 발견했습니다. 이 속성은 SystemParameters.WorkArea입니다. 혼합 참조에 대한 내 질문은 여전히 ​​나타납니다.

답변

0

응용 프로그램이 Windows Forms와 WPF 모두에 대해 어셈블리를로드해야하기 때문에 리소스와 성능 오버 헤드를 고려해야합니다. MSDN 포럼에서 WPF/Winforms 연동에는 꽤 많은 CPU주기가 걸리는 것으로 여러 번 언급되었습니다 ...

0

필자는 필요할 때 WinForms를 참조하는 것이 좋지 않다고 생각합니다. WPF는 여전히 비교적 새로운 기술이기 때문에 아직 WinForms와의 완전한 패리티 패리티가 없습니다. 예를 들어, 내 지식으로는 표준 Windows 대화 상자 (파일 열기, 파일 저장, 폴더 찾아보기 등)가 WPF에서 아직 구현되지 않았습니다. WPF 응용 프로그램에서이를 표시하는 유일한 방법은 WinForms 버전을 사용하거나 P/Invoke를 사용하여 Win32 버전을 직접 표시하는 것입니다. WinForms 버전을 개인적으로 사용하기 때문에 Win32 API를 포장하는 데 어려움을 겪었습니다.

내 접근 방식은 최대한 WPF를 사용하고 WPF가 내 요구 사항을 충족시키지 못하면 WinForms에만 대체합니다. 다행히도 WPF의 다음 릴리스에서이 기능이 점점 필요하지 않게되었습니다.

+2

WPF에는 OpenFileDialog 및 SaveFileDialog가 있습니다. 이들은 Microsoft.Win32 네임 스페이스에 있습니다. –

+0

와우, 나는 그것을 몰랐다. 팁 고마워. :) – Andy