2012-04-27 16 views
5

私は、ショップ用のWPFアプリケーションを開発しています。WPFでのMDIアプリケーションの最善のアプローチ?

私はMainWindowを持っており、残りはすべてChildです。

子ウィンドウとして使用するのが最適です。

  1. ウィンドウ
  2. ユーザーコントロール
  3. ウィンドウが正常になり

、それがメインウィンドウの一番上になり、そのユーザーコントロール場合には、メインウィンドウのキャンバスであろう。

誰も私にこの2つを使用するのが最善であることを示唆することができます。

答えて

5

子ウィンドウ用にUserControlsを使用することをおすすめします。これにより、メインウィンドウのすべての "親"コントロールを設定することができ、子はそれらをオーバーライドしません。

さらなる提案として、Caliburn Microを調べることをおすすめします。これは、WPFウィンドウとユーザーコントロールを処理するための素晴らしいフレームワークです。親ウィンドウに子ユーザーコントロールを追加するには

、私は通常ちょうどそのように私のメインフォームにContentControlに追加します。

<ContentControl x:Name="ViewWindow" Margin="10" /> 

ちょうどその制御にあなたの子供を割り当て、あなたは罰金になります。人生&コーディングで多くのものと同様

+0

MainWindowに子ウィンドウ(UserControl)を追加するにはどうすればいいですか?Canvasは良いです。 –

+0

私は通常、メインウィンドウにContentControlを追加するだけで、複数のChildWindowを開く必要があります。私はあなたの詳細を与えるために私の投稿を編集しました。 – IAmTimCorey

+0

ContentControlで複数の子コントロールをサポートすることができます –

1

:それが依存:)

  • ウィンドウ

    • 対話なしに少しあった場合、新しいウィンドウが自身の状態&行動
    • を持って

      /メインウィンドウ間のメッセージング&ポップアップウィンドウ
  • ユーザーコントロール

    • 根底にあるメインウィンドウの状態がポップアップの動作にとって重要である

    • 状態変化が2つのウィンドウ間で渡す必要が

これは設計上の決定です。

+0

理解できません –

4

私は、AvalonDoのようなMDIフレームワークを使用することをお勧めしますck:http://avalondock.codeplex.com/ 多くの時間を節約できます。

+0

これは、実際にはWPFを使用したMDIアプリケーションの最適なアプローチの1つで、古いMDIアプリケーションの短所を改善し、MVVMも可能です。 –

1

私はあなたのメインウィンドウでフレームを使用し、複数のページをホストするためにそれを使用することをお勧めしますが、親子ウィンドウの操作を使用することに決めたとき、子ウィンドウはデスクトップアプリケーションに最適です。

はあなたが次のような利点を達成するのを助けるでしょう。このアプローチを使用 this link

訪問することができますWPFとSilverlightのナビゲーションの詳細については:アタッチされていないイベントハンドラによるメモリリークの

  1. レッサーチャンス。
  2. ページの背景を透明に設定できるため、一貫性のあるデザインは、子ウィンドウのスタイルを指定せずに達成できます。
  3. ユーザーは、構築中のソフトウェアで他のプログラムを同時に使用しているときに、どのウィンドウにフォーカスが当てられているかを見つけるのに苦労することはありません。

私はまた、このソフトウェアを構築する際に考慮できるものもたくさんあると思っていますが、終わりにはまだこの問題を決めるべき人です。

これは私の提案であり、これが役に立ちますようお願いいたします。

2

のウェブサイトを参照してください:http://wpfmdi.codeplex.com/

+0

Re:wpfmdiプロジェクト去年2月の記事によると、 "プロジェクトがもう一度放棄されたようです" – user316117

1

MDIContainerをチェックすることを検討してください。 MDI for WPFと似たプロジェクトですが、MDIChildウィンドウやインターフェイスなどを実装する必要がないため、自由度が増します。

関連する問題