2

数週間前に (C# で) WPF を使い始めましたが、タブコントロールの高度な使用法について助けが必要です。

まず第一に、アプリケーションの設計に MVVM (Model View ViewModel) パターンを使用しており、コード ビハインド ファイル (xaml ファイルを初期化する) にコードを追加しないという制約があります。

今私の問題は、メインウィンドウ ビュー (ウィンドウ) に動的に新しい tabItems を作成することです。これは、ボタン (たとえば、「新しいタブ」ボタン) をクリックしたときに詳細ビュー (ページ) のインスタンスを表示します。

Web 上の tabitem からの動的な作成に関する多くのオフの情報を見つけましたが、多くの場合、コード ビハインド ファイルに変更が加えられています。私はバインディングを使用していますが、この種のものにバインディングを使用する方法がわかりません。

4

3 に答える 3

3

MVVM がお手伝いします。

MainWindow ビューの ViewModel を作成します。そこでは、DetailViewModels のコレクションを持つことができます。ObservableCollectionここで DetailViewModels を使用するだけです。

ItemsSourceビューで、のTabControlをそのコレクションにバインドします。

AddTab ボタンには、コマンド バインディングを含めることができます。その Command はICommand 、MainWindowViewModel で発行される派生クラスにすることができます。ボタンを押すと、MainWindow ViewModel が表示され、別の DetailViewModel が追加され、そのように View が更新されます。

ここで、MVVM に関するこの優れたビデオチュートリアルをご覧ください: MVVM の Jason Dollinger

彼は、メイン ビューモデルと詳細ビューモデル、およびコマンドの例を使用して、その作成方法を説明しています。

彼がビデオで開発したソースコードは、Lab49のソースコードから入手できます。

で使用される ViewModel を作成する方が簡単かもしれませんTabControlDataContextTabControlをその TabControlViewModel に設定します。その TabControlViewModel を MainWindowViewModel でパブリック プロパティとして公開して、それを実現します。

おそらく一部の InitializeComponent を除いて、コード ビハインドは空になります。

于 2012-07-24T06:20:54.347 に答える
2

Sacha Barber による MVVM に関するすばらしい一連の記事には、ダウンロード可能なアプリケーションが含まれており、タブ コントロールを使用して動的ビューを作成する方法を公開しています。記事に添付されているデモ アプリケーションをダウンロードして、動的タブ コントロールの使用方法を確認できます。例:

タブ コンテンツのデータ モデルを表すワークスペースのコレクションをバインドする場所が必要です。必要に応じて、タブの追加プロパティ (閉じることができるかどうか、無効にするかどうか、名前など) が必要です。これは、ViewModelBase にすることができます。ビュー モデルをサポートするタブ項目テンプレートを作成します。

<TabControl x:Name="tabControl"
                 IsSynchronizedWithCurrentItem="True" 
                 ItemsSource="{Binding Path=Workspaces}" 
                 Template="{StaticResource DynamicTabControlTemplate}">         
</TabControl>

このようなワークスペースのinitコレクション

ワークスペース = new ObservableCollection();

また、コレクション タブ コントロールに新しい項目を追加した後も変更されます。

于 2012-07-24T06:34:20.367 に答える
1

タブ項目のコレクションを表すItemsSourceのプロパティにバインドできます。TabControl次に、ViewModel からコレクションを操作できます。

于 2012-07-24T06:17:44.573 に答える