【发布时间】:2026-01-06 15:35:01
【问题描述】:
我想实现以下目标:
- 我的 ViewModel 公开了一个名为“Categories”的属性,它是 CategoryViewModel 对象的集合
- 每个 CategoryViewModel 对象都公开了一个名为“Items”的属性,它是字符串的集合*。
- 在我的视图中,我想要一个 TabControl,其中包含 'Categories' 集合中每个对象的 TabItem。
-
每个 TabItem 的内容应该是一个 xceed DataGrid 控件,显示所选选项卡的 Items 集合的内容。
<TabControl ItemsSource="{Binding Categories}"> <TabControl.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding CategoryName}" /> </DataTemplate> </TabControl.ItemTemplate> <TabControl.ContentTemplate> <DataTemplate> <xcdg:DataGridControl ItemsSource="{Binding Items}" AutoCreateColumns="True"> </xcdg:DataGridControl> </DataTemplate> </TabControl.ContentTemplate> </TabControl>
当我直接绑定到 DataGridControl 的 ItemsSource 属性时,这可以正常工作。但是,为了利用 DataGridControl 的所有功能,我需要将 DataGridControl 的 ItemsSource 属性绑定到绑定到我的 Items 集合的 DataGridCollectionViewSource 对象。当网格没有嵌套在另一个控件中时,我会通过在 UserControl 的 Resources 部分中创建一个 DataGridCollectionViewSource 对象并绑定到该对象来执行此操作。
<UserControl>
<UserControl.Resources>
<xcdg:DataGridCollectionViewSource x:Key="GridData"
Source="{Binding Items}" />
</UserControl.Resources>
<Grid>
<xcdg:DataGridControl
ItemsSource="{Binding Source={StaticResource GridData}}"
AutoCreateColumns="True">
</xcdg:DataGridControl>
</Grid>
</UserControl>
我需要如何构造 XAML,以便在绑定 TabControl 时为每个 TabItem 创建一个 DataGridCollectionViewSource 对象,以便可以将在 TabItem 的内容中生成的 DataGridControl 绑定到它?
清如泥,对吧? :)
谢谢!
注意事项:
*在真正的解决方案中,集合包含一个比简单字符串更复杂的类的对象,但使用字符串使示例更简单。
【问题讨论】:
标签: wpf xaml data-binding collections