如何在 XAML 中将 TabControl 绑定到 ObservableCollection

发布于 2024-08-10 19:04:25 字数 703 浏览 7 评论 0原文

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

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

我想将其移至 XAML 文件。

简而言之,

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

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

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

I have the following line of code in my code-behind class.

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

I would like to move this to the XAML file.

In brief,

  • There is a MainWindow class representing the main-window.
  • There is a TabControl placed on the main-window.
  • There are 2 view-models called MainWindowViewModel and TabItemViewModel.
  • MainWindowViewModel has an observable collection of TabItemViewModel classes.
  • MainWindowViewModel is the view-model class for the main window.
  • TabItemViewModel is the view-model class for each individual tab in the TabControl on the main window.
  • The DataContext property of the MainWindow class is set to an instance of the MainWindowViewModel class, instantiated in XAML.

What I want to do is bind the TabItemViewModels property of the MainWindowViewModel class to the ItemSources property of the TabControl.

I am looking for not just a line of code, but also some pointers on the syntax for Bindings as I am totally lost with it and it seems to be pretty crucial to working with XAML.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌伤ぢ 2024-08-17 19:04:25

首先是您不需要的代码行:

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

有关详细信息和语法,请参阅数据绑定概述绑定源概述绑定声明概述

First the line of code you're not looking for:

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

How does this tie into the syntax for bindings? A binding with no Source, ElementName or RelativeSource automatically refers to the DataContext. In your case the MainWindow.DataContext is the MainWindowViewModel that has the TabItemViewModels property. (DataContext propagates down the visual tree, so the TabControl inherits the same DataContext as the containing MainWindow.) So you can just reference that property by name.

For more info and syntax see Data Binding Overview, Binding Sources Overview and Binding Declarations Overview in MSDN.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文