2017-10-03 17 views
1

私は複数のウィンドウファイルを持っており、Xamlファイル(ウィンドウ)をMVVMパターンのタブコントロールにマージしたいと思います。 各項目タブは、Xamlファイルを表します。 私はこのような何かが必要です。WPVMのMVVMパターンでTabcontrolを使用

<TabControl > 
     <TabItem> 
      <local:FirstView></local:FirstView> 
     </TabItem> 

     <TabItem> 
      <local:SecondView></local:SecondView> 
     </TabItem> 
</TabControl> 

をしかし、私はこのエラーを取得:

「ウィンドウは、ツリーのルートでなければならないビジュアルの子としてウィンドウを追加することはできません。」

私はこのような多くのトピックを見てきましたが、ユーザーコントロールを使用するか、複数のビューモデルで1つのビューを使用します。

ウィンドウコントロール(xaml)をタブコントロールにインポートする方法はありますか?

もう1つ重要なことは、私はキャンセルのようなボタンを持っていたいと思います。取り消しは、1つのレベルに戻る必要があることを意味します。 ビューモデルではビューが認識されないため、どのようにナビゲートできますか?

+4

ほとんどの場合、ビューの一部はウィンドウです。それらはユーザコントロールでなければなりません – Liero

+0

私は通常、メインビューに "INavigation"インタフェースを実装して、子ビューモデルに注入するという問題を "キャンセル"します。 – BradleyDotNET

+0

@BradleyDotNETもっと詳しく説明してください。 – Farshad

答えて

5

Is there any way to import window(xaml) into tab control?

いいえ、ありません。 System.Windows.Windowは、別のSystem.Windows.Windowの子にすることはできません。

タブ項目の内容は、UserControlsと定義する必要があります。

ウィンドウの内容をユーザーコントロールに移動するだけでよいはずです。

+0

あなたはユーザーコントロールを作成することが唯一の方法ですか? – Farshad

+1

はい。ウィンドウ*はTabItemの子にはなれません。 – mm8

関連する問題