То, что покерный злодей говорит правильно, но это не значит, что PivotViewer
не является решением для вас.У меня была похожая проблема с системой, над которой я работал, и мне удалось найти подходящий способ сделать игру PivotViewer
приятной.Это будет работать только для коллекций JIT, поскольку оно зависит от повторного извлечения данных.
По сути, система, над которой я работал, - это система управления делами.Большая часть данных, связанных с делом, является взаимоисключающей и поэтому соответствует модели PivotViewer
, но есть также возможность добавлять «теги» к делу, и, как вы предлагаете, часто пользователь захочет использовать комбинационную логику.Вот что я сделал, чтобы решить эту проблему.
Во-первых, вам понадобится копия Silverlight Spy .Теперь на вкладке проводника SSpy вы можете развернуть дерево визуалов и посмотреть на внутренности PivotViewer
.Вот как выглядит мой ...
Вы можете видеть, что я свернул прямо в элемент управления с именем 'PART_FacetPane'.Ниже есть группа CustomAccordianItem
с.По сути, вам просто нужно создать подкласс PivotViewer (именно поэтому мой говорит PivotViewerEx) и переопределить метод OnApplyTemplate
.
Здесь вы сможете использовать GetTemplateChild
или некоторые другие средства для навигации по VisualTree и добавления другого элемента управления самостоятельно.В своем проекте я использовал простой элемент управления облаком тегов, который я ранее построил.
Что я делаю, так это обрабатываю события элемента управления облаком тегов и добавляю значения строки запроса к URL-адресу, используемому для построения CXML, и фильтрую данные на основе этих параметров.Это не так гибко, как возможность фильтровать данные «вживую», как это было раньше, но сейчас это решение.
Вероятно, стоит упомянуть, что в зависимости от ваших обстоятельств вам может потребоваться добавить окончательно сгенерированный случайным образомзначение строки запроса для URL CXML, поэтому вы не получите кэшированную копию данных.
HTH, Stimul8d.