【问题标题】:How to bind a TabControl to an ObservableCollection in XAML如何将 TabControl 绑定到 XAML 中的 ObservableCollection
【发布时间】:2009-11-14 02:08:48
【问题描述】:

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

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

我想将此移至 XAML 文件。

简而言之,

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

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

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

【问题讨论】:

    标签: wpf xaml data-binding tabcontrol observablecollection


    【解决方案1】:

    首先是您不查找的代码行:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多