如何将TabControl绑定到XAML中的ObservableCollection

时间:2009-11-14 02:08:48

标签: wpf xaml data-binding tabcontrol observablecollection

我的代码隐藏类中有以下代码行。

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

我想将其移至XAML文件。

简而言之,

  • 有一个表示主窗口的MainWindow类。
  • 主窗口上有一个TabControl。
  • 有两个名为MainWindowViewModel和TabItemViewModel的视图模型。
  • MainWindowViewModel有一个可观察的TabItemViewModel类集合。
  • MainWindowViewModel是主窗口的视图模型类。
  • TabItemViewModel是主窗口TabControl中每个选项卡的视图模型类。
  • MainWindow类的DataContext属性设置为MainWindowViewModel类的实例,在XAML中实例化。

我想要做的是将MainWindowViewModel类的TabItemViewModels属性绑定到TabControl的ItemSources属性。

我正在寻找的不仅仅是一行代码,还有一些关于Bindings语法的指针,因为我完全迷失了它,而且使用XAML似乎非常重要。

1 个答案:

答案 0 :(得分:0)

首先是你不想要的代码行:

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

这与绑定的语法有什么关系?没有Source,ElementName或RelativeSource的绑定自动引用DataContext。在您的情况下,MainWindow.DataContext是具有TabItemViewModels属性的MainWindowViewModel。 (DataContext沿着可视化树向下传播,因此TabControl继承与包含MainWindow相同的DataContext。)因此,您只需按名称引用该属性。

有关详细信息和语法,请参阅MSDN中的Data Binding OverviewBinding Sources OverviewBinding Declarations Overview