Можно ли использовать CollectionViewSource в DataTemplate?

Действительно ли возможно явно использовать CollectionViewSource в шаблоне данных? Обычно мы поместили CollectionViewSource в ресурсы вместе с шаблоном, но наша модель не признает, что, потому что 'источник' collectionviewsource является свойством DataContext на этом уровне в дереве, означая, должен быть экземпляр на этом уровне. Произведение его в корне ресурсов означало бы, что был только один экземпляр. Мы также не можем просто использовать группировку на внешнем уровне, поскольку эти объекты не существуют, пока Вы настолько далеко не снижаетесь на иерархию, и не все одноуровневые элементы даже имеют это свойство. Таким образом, это имеет смысл логически, что мы инстанцируем CollectionViewSource в DataTemplate (в этом экземпляре HierarchicalDataTemplate, но это не важно.)

А именно, мы пытаемся позволить определенную сортировку на этом конкретном уровне узла. Наш только другой выбор состоит в том, чтобы отсортировать в самом ViewModel, но это становится болью, так как мы используем ObservableCollections, которые самостоятельно не поддерживают сортировку. На самом деле, каждая статья, мы видели по теме все состояние, необходимо использовать CollectionViewSource точно по этой причине, следовательно этот вопрос.

Например, это работает …

<HierarchicalDataTemplate x:Key="CategoryTemplate"
    ItemTemplate="{StaticResource TreeViewSymbolTemplate}"
    ItemsSource="{Binding Symbols}">

    <TextBlock Text="{Binding Name}" FontWeight="Bold" />

</HierarchicalDataTemplate>

Но это не делает …

<HierarchicalDataTemplate x:Key="CategoryTemplate"
    ItemTemplate="{StaticResource TreeViewSymbolTemplate}">

    <HierarchicalDataTemplate.ItemsSource>
        <Binding>
            <Binding.Source>
                <CollectionViewSource Source="{Binding Symbols}" />
            </Binding.Source>
        </Binding>
    </HierarchicalDataTemplate.ItemsSource>

    <TextBlock Text="{Binding Name}" FontWeight="Bold" />

</HierarchicalDataTemplate>

Кажется мне как он, был бы, но это не делает. Снова, мы не можем расстроить CollectionViewSource на том же уровне как шаблон данных, поскольку должен быть один экземпляр на шаблон, так как у каждого есть его собственный набор объектов (хотя они все совместно используют критерии сортировки.)

M

5
задан MarqueIV 20 October 2010 в 15:26
поделиться