Многоуровневая группировка с использованием CollectionViewSources - PullRequest
0 голосов
/ 12 февраля 2009

При привязке данных к TreeView как бы вы создали несколько уровней группировки для отображаемых элементов?

Представьте, что вы привязаны к классу Shop, который, помимо прочего, обладает свойствами Region и RetailChain. Желаемый эффект должен иметь TreeView, который отображает магазины в следующей топологии:

+ Region: California
|  + Walmart
|    + Walmart Pacific Beach
|    + Walmart Orange County
|    + Walmart San Diego
+ Region: New Jersey
   + Frys
   | + Frys Electronics NJ
   + Walmart
     + Walmart New Jersey

Клинкер таков: Region s не связаны с Retailer s, и наоборот, поэтому Shop (листовой узел) является единственным общим знаменателем.

Использование CollectionViewSource допускает только один уровень группировки (несмотря на то, что класс CollectionView имеет свойства, которые предполагают многоуровневую группировку).

Использование HierarchicalDataTemplate работает только для нисходящих топологий, которым этот сценарий не подходит.

Есть предложения, как это решить?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2009

Ответ на мою проблему оказался следующим:

Добавьте несколько группировок (через PropertyGroupDescriptor) в CollectionViewSource, затем используйте ListBox / DataGrid с несколькими GroupStyles. Нетто-эффект этого состоит в том, что конечные элементы (в моем примере, магазины) сгруппированы на двух разных уровнях.

Переключение того, какой PropertyGroupDescriptor появляется первым в CollectionViewSource, изменит то, какое свойство является корневым уровнем в результирующем дереве.

0 голосов
/ 12 февраля 2009

Вы всегда можете написать код, который будет предварительно обрабатывать данные и создавать набор классов для более легкой привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...