Я хочу добиться следующего:
- My ViewModel предоставляет свойство с именем «Categories», которое представляет собой коллекцию объектов CategoryViewModel
- Каждый объект CategoryViewModel предоставляет свойство с именем «Items», которое представляет собой набор строк *.
- В моем представлении я хочу TabControl с 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>
Это работает нормально, когда я связываюсь напрямую со свойством ItemsSource DataGridControl. Однако, чтобы использовать все функциональные возможности DataGridControl, мне нужно связать свойство ItemsSource DataGridControl с объектом DataGridCollectionViewSource, который связан с моей коллекцией Items. Я делаю это, когда сетка НЕ вложена в другой элемент управления, создавая объект DataGridCollectionViewSource в разделе ресурсов UserControl и привязывая его к этому.
<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, чтобы с ним мог быть связан DataGridControl, созданный в содержимом элемента TabItem?
Ясно, как грязь, верно? :)
Спасибо!
Примечания:
* В реальном решении коллекция содержит объекты класса, который является более сложным, чем простая строка, но для упрощения примера использовалась строка.