4


2

TabItemの新しいウィンドウ?

「TabControl」の「TabItem」で別の「Window」を開くことはできますか?

私がこれをしたい理由は、「TabControl」に5つの「TabItem」がある場合、これらすべての「TabItem」とそれらに関連するアクションをコーディングしている1つのウィンドウファイルが非常に大きくなるからです。 したがって、それぞれの TabItem`に独自の Window`ファイルを与えることができればいいと思います。

または、「TabControl」を制御する「Window」ファイルが大きくなりすぎる問題をどのように解決しますか?

5 Answer


7



TabItemは任意のコントロールを独自の子としてホストできるため、各TabUserControlは実際には単純なUserControlです。


4


いくつかの選択肢があります。

  • 1つ以上を追加します http://msdn.microsoft.com/en-us/library/system.windows.resourcedictionary.aspx [リソースディクショナリ]は、タブでホストするさまざまなビューのテンプレートとスタイルを備えたリソースを含むアプリです。 このアプローチは、ビジュアルツリーのみの分離を維持する必要がある場合にのみ有効です。

  • つくる http://msdn.microsoft.com/en-us/library/system.windows.controls.usercontrol.aspx [ユーザーコントロール]各ビュー(独自のXAMLおよびクラスファイルを使用)で、各ビューで1つのインスタンスを使用タブ。 このアプローチにより、特定のビジネスロジックと対応するビジュアルツリーを一緒にカプセル化できます。

  • コードからUIの一部を生成します。 これには利点はありませんが、 tはXAMLを小さくします。 .csファイルが大きくなりすぎた場合は、いつでも複数のコードファイルに分割して、部分クラスを使用できます。 (完全を期すためにこれを投入する必要がありました:-))


2


各TabItemのUserControlを作成します。


2


TabItem ContentをWindowコンテンツと等しく設定することもできます

例:[WindowTypeはウィンドウです]

WindowsType oWindow = new WindowType();
TabItem oTab = new TabItem();
oTab.Content = oWindow.Content;


0


既に述べたように、UserControlを使用できます。

ただし、ページコントロールも使用できます。 各「ウィンドウ」はページになり、タブにはNavigationControlが含まれます。 以前にこのアプローチを使用したことがありますが、うまく機能します。 私はUserControlルートを好みますが、両方とも有効です。