8

ショップ用の WPF アプリケーションを開発しています。

だから私はMainWindowを持っていて、残りはすべてChildになります。

子ウィンドウとして使用するのに最適なものはどれですか。

  1. ユーザーコントロール

Window は正常で、MainWindow の一番上に表示され、UserControl の場合は MainWindow の Canvas に表示されます。

ですから、この2つのうちどちらを使用するのが最適かを誰でも提案できますか.

4

6 に答える 6

9

I would recommend using UserControls for your child windows. This allows you to set up all of the "parent" controls on your main window and the children won't override them.

As a further suggestion, I would recommend looking into Caliburn Micro. That is a great framework for dealing with WPF windows and user controls.

To add a child UserControl to the parent window, I usually just add a ContentControl to my main form like so:

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

Just assign your child to that control and you will be fine.

于 2012-04-27T20:49:04.867 に答える
4

AvalonDock のような MDI フレームワークを使用することをお勧めします: http://avalondock.codeplex.com/ 時間を大幅に節約できます。

于 2012-04-27T21:33:12.253 に答える
2

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

于 2012-04-28T07:35:21.857 に答える
2

Like many things in life & coding: it depends :)

  • Window

    • When the new window has its own state & behavior
    • When there is little to no interaction/messaging between the main window & the pop-up window
  • User Control

    • When the state of the underlying main window is critical for the operation of the pop-up
    • When state changes need to be passed between the 2 windows

These are some of the design decisions which come to mind...

于 2012-04-27T20:49:41.927 に答える
1

親ウィンドウと子ウィンドウの相互作用を使用することにした場合、子ウィンドウはデスクトップアプリケーションに最適ですが、個人的には、メインウィンドウでフレームを使用し、それを使用して複数のページをホストすることをお勧めします。

WPFとSilverlightでのナビゲーションの詳細については、このリンクにアクセスしてください。

このアプローチを使用すると、次の利点を実現できます。

  1. アタッチされていないイベントハンドラーが原因でメモリリークが発生する可能性が低くなります。
  2. ページの背景を透明に設定できるため、子ウィンドウのスタイルを示さなくても一貫したデザインを実現できます。
  3. 他のプログラムがあなたが構築しているソフトウェアと同時に使用されたとき、ユーザーはどのウィンドウが焦点を合わせているかを見つけるのに苦労することはありません。

また、このソフトウェアを構築する際に検討できることもたくさんあると思いますが、結局のところ、この問題を決定するのはあなたです。

これは私の提案にすぎず、これがお役に立てば幸いです:)。

于 2012-04-28T04:08:30.613 に答える
1

MDIContainerを確認することを検討してください。MDI for WPFと同様のプロジェクトですが、 MDIChild ウィンドウ、インターフェイスなどの実装を強制しないため、より自由になります。

于 2013-10-28T13:33:43.327 に答える