WPF Datagrid Несколько синхронизированных замороженных, складывающихся панелей, разделенных GridSplitter - PullRequest
4 голосов
/ 06 февраля 2012

У меня есть требование создать «супер-сетку» как часть приложения, которая будет состоять из нескольких замороженных и прокручивающихся панелей.Сетка также требует, чтобы она поддерживала следующие функции:

  • Отображение сетки данных с сотнями строк с «разумной» скоростью прокрутки
  • Группировка по определенному полю, свернуть /развернуть сгруппированные
  • Показать любой элемент управления внутри поля, например изображения, текст, поле со списком, кнопка
  • Разрешить кнопки и редактирование полей, а также режим только для чтения
  • Разрешить несколько вертикальных разделенных панелей (или обходной путь, несколько синхронизированных сеток)
  • Изменение порядка столбцов пользователя с сохранением
  • Сортировка столбцов пользователя по возрастанию / убыванию
  • Динамическая вставка/ удаление столбцов (выбор столбцов)
  • 4-е измерение под группировкой - шаблон RowDetails для выбранной строки
  • Разрешить мигать / анимированные шаблоны ячеек / строк при обновлении значения

Моя первоначальная выполнимость позволяет предположить, что WPF Datagrid способен удовлетворить почти все вышеперечисленные требования (с тяжелыми шаблонами), однако многократноеВертикальные панели не могут быть закрыты.Ниже приведена диаграмма того, чего я пытаюсь достичь:

enter image description here

Я хотел бы узнать, делал ли это кто-то раньше, и если да, то какую сеточную технологию вы использовали.

  • Можно ли сделать вышеизложенное в WPF Datagrid?Я знаю о замороженных столбцах, однако, похоже, что это применимо только к замораживанию первых N столбцов
  • Можно ли достичь вышеуказанного с помощью нескольких сеток и синхронизации положений вертикальной прокрутки?
    • Если это так, будет ли это решение по-прежнему виртуализировано?
  • Существуют ли какие-либо сторонние сети, которые вы можете порекомендовать для достижения этой цели?Обратите внимание, что мы будем в значительной степени стилизовать сетку в соответствии с внутренним брендингом, поэтому она должна быть гибкой и смешиваемой.

Любые комментарии / предложения приветствуются.

Обновление - результаты технико-экономического обоснования

  • У меня есть рабочий прототип для этого с использованием 3x сеток и разборных разветвителей сетки между ними.
  • Наблюдатели синхронизируются, используя ответ от на этот вопрос .
  • Выбранная строка синхронизируется между тремя сетками путем привязки к общему свойству SelectedIndex с привязкой TwoWay.

Я буду работать над шаблонами группировки и подробностей строк дальше ... Спасибо ответчикам за ваши очки!:)

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Я сделал это с помощью стандартного DataGrid с превосходной производительностью и максимальной гибкостью, но для этого требуется звуковая архитектура.Как данные, так и пользовательский интерфейс должны быть виртуализированы - никакой контроль не может аннулировать стоимость сортировки большого набора данных (например), поэтому, если такая сортировка происходит в потоке пользовательского интерфейса, пользователь заметит.Если ваш сервер поддерживает подкачку страниц и фильтры, ваш интерфейс может виртуализироваться, и пользователь никогда не узнает, что из 10000 было загружено только 100 строк. По мере прокрутки страницы данных загружаются и выгружаются в фоновом режиме, иПользовательский интерфейс никогда не перестает быть отзывчивым.

Однако знание того, где вы работаете, заставляет меня заподозрить, что ваш пользовательский интерфейс - настоящая рабочая лошадка ...

1 голос
/ 06 февраля 2012

Я выполнил большинство ваших требований и даже больше с помощью devexpress wpf grid control .Это не бесплатно, и есть некоторая кривая обучения (их документация необходима), но это сэкономит вам так много времени в долгосрочной перспективе ...

...