0

コード ビハインド クラスに次のコード行があります。

TabControl.ItemsSource = ((MainWindowViewModel)DataContext).TabItemViewModels;

これを XAML ファイルに移動したいと思います。

簡単に言えば、

  • メインウィンドウを表す MainWindow クラスがあります。
  • メインウィンドウに配置された TabControl があります。
  • MainWindowViewModel と TabItemViewModel という 2 つのビュー モデルがあります。
  • MainWindowViewModel には、監視可能な TabItemViewModel クラスのコレクションがあります。
  • MainWindowViewModel は、メイン ウィンドウのビュー モデル クラスです。
  • TabItemViewModel は、メイン ウィンドウの TabControl の個々のタブのビュー モデル クラスです。
  • MainWindow クラスの DataContext プロパティは、XAML でインスタンス化された MainWindowViewModel クラスのインスタンスに設定されます。

私がやりたいことは、MainWindowViewModel クラスの TabItemViewModels プロパティを TabControl の ItemSources プロパティにバインドすることです。

コード行だけでなく、バ​​インディングの構文に関するいくつかのポインターも探しています。これは、XAML を操作するために非常に重要であるように思われるためです。

4

1 に答える 1

0

最初に、探していないコード行:

<TabControl ItemsSource="{Binding TabItemViewModels}" ... />

これはどのようにバインディングの構文に結び付けられますか? Source、ElementName、または RelativeSource のないバインディングは、自動的に DataContext を参照します。あなたの場合、MainWindow.DataContext は、TabItemViewModels プロパティを持つ MainWindowViewModel です。(DataContext はビジュアル ツリーを下方向に伝播するため、TabControl はそれを含む MainWindow と同じ DataContext を継承します。) したがって、そのプロパティを名前で参照するだけです。

詳細と構文については、MSDNの「データ バインディングの概要」、「バインディング ソースの概要」、および「バインディング宣言の概要」を参照してください。

于 2009-11-14T02:13:11.150 に答える