2009-03-30 15 views
4

私は最初のWPFアプリケーションを作成しています。System.Windows.Forms名前空間の機能を混在させるときに何らかのベストプラクティスがあるかどうかを知りたいと思っていました。System.Windows.Formsを参照しているWPFアプリケーション

基本的には、ユーザーモニターの右下隅にデフォルトで開くポップアップウィンドウが必要です。

WPF名前空間に相当するScreen.PrimaryScreen.Boundsが見つかりません。私が見た例は、WPFアプリケーションでSystem.Windows.Formsを参照することを示唆しています。

これは、このリファレンスがデフォルトでは含まれていないため、この悪い習慣ですか?

この新しいWPFウィンドウを使用できるように、既存のWindowsフォームアプリケーションでWPF必須リソースを参照します。

この方法に問題はありますか?

EDIT:実際には、Windowsフォームを参照せずにプライマリ画面の情報を返すプロパティが見つかりました。プロパティはSystemParameters.WorkAreaですが、ミキシング参照の私の質問はまだ立っています。

答えて

0

また、アプリケーションでWindowsフォームとWPFの両方のアセンブリをロードする必要があるため、リソースとパフォーマンスのオーバーヘッドを考慮する必要があります。 WPF/WinformsのインターポーリングにはかなりのCPUサイクルがかかることがMSDNフォーラムで数回述べられています。

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

関連する問題