Группировка данных в древовидной структуре WPF - PullRequest
5 голосов
/ 16 июля 2010

Я хочу создать WPF TreeView с двумя вариантами группировки (переключатели).Таким образом, данные будут сгруппированы двумя различными способами в двухуровневой иерархии, самый нижний уровень - это фактические элементы данных, а группы - просто способ представления данных для более легкого понимания.

Они такжеиметь возможность выбирать элементы по группам (флажки), но я уже понял эту часть, например, если я хочу представлять объекты базы данных и хочу, чтобы они группировались либо по схеме, либо по типу объекта (таблица, представление, функция и т. д.).

Я просто не знаю, как мне начать в двух режимах группировки.Должен ли я полностью реструктурировать свой ObservableCollection всякий раз, когда меняется режим группировки, или есть более простой способ?

Кроме того, что если мои DataTemplate для 2-го уровня будут немного отличаться в зависимости от режима группировки, дляНапример, когда сгруппированы по типу объекта, вам нужно отобразить схему на уровне 2?

Может кто-нибудь дать мне несколько советов о том, как начать и какие методы использовать?

Ответы [ 2 ]

3 голосов
/ 16 июля 2010

Сгруппируйте свою коллекцию, установив GroupDescription в ее CollectionViewSource.Вы можете сделать это в коде, выполнив что-то вроде этого:

CollectionViewSource.GetDefaultView(yourCollection).GroupDescriptions.Add(
    new PropertyGroupDescription("PropertyName"));

Или вы можете сделать это в XAML, явно создав CollectionViewSource .

    <CollectionViewSource
        Source="{StaticResource yourCollection}"
        xmlns:dat="clr-namespace:System.Windows.Data;assembly=PresentationFramework">
        <CollectionViewSource.GroupDescriptions>
            <dat:PropertyGroupDescription PropertyName="PropertyName"/>
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

Если вы используете простой ItemsControl, такой как ListBox, вы можете просто установить свойство GroupStyle .Если вы хотите использовать TreeView, я думаю, что вы хотите связать со свойством Groups в ICollectionView.Вы должны прочитать записи в блоге Беа Столльница о группировке:

0 голосов
/ 16 июля 2010

Проверьте эту ссылку на HierarchicalDataTemplate. Приведены примеры использования его с различными типами.

...