Silverlight: Улучшенный TreeView с CheckBox. Добавил детальное представление и фильтрацию элементов для детального представления - TreeView Using CheckBoxes improvement



Есть в Silverlight Toolkit пример Using CheckBoxes in a TreeView – Использование чекбоксов в дереве. Я его срочно доработал :).

Посмотреть готовый припер вы можете сразу по этой ссылке Check Hierarhy Perfect

Скачать проект здесь.

В Silverlight есть TreeView в котором вставлены CheckBox. Изменение этих CheckBox связано как вверх по иерархии, так и вниз.
Как это работает в Toolkit можно посмотреть здесь (внимание, долго грузиться, тк сразу все примеры из Toolkit).
Я чуть-чуть доработал это приер и вот что мне удалось туда добавить

  • работа с детальным представление и чтоб в изменения в детальном представлении изменяли отображение самого TreeView

  • Избавиться от обработчика события клика по элементу дерева

  • Дабавил возможность разделения элементов между деревом и детальным представлением. Например у структуре организации у вас есть подразделения и сотрудники и вы хотите в дереве отобаржать только подразделения, а в детальном DataGrid или другом TreeView сотрудников. Ну по псякому может быть.

  • Я делал сразу, чтоб в отличии от Silverlight Toolkit у меня поддерживался Drag & Drop, но тестировать это нет никакого времени, извините

  • Также, в отличии от Toolkit, поддерживается динамическое изменение всех трех коллекций в коде.

  • Все три коллекции синхронизированы


от 27.09.2009

  • Убрал дурацкое промежуточное состояние Null на родительском чекбоксе при клике. Это когда в примере на Silverlight Toolkit кликаем по родительскому чекбоксу, а он вместо перехода с Checked на Unchecked переходит в промежуточное третье состояние, когда свойство (Boolean?) IsChecked = null. Это так раздражает :)

  • По просьбе коллег по умолчанию сделал все чекбоксы выделенными (IsChecked = true). Вы можете это сами переопределить для себя в классе установив
    private Boolean? _isCheckedFild_ = false; или private Boolean? _isCheckedFild_ = null; вместо private Boolean? _isCheckedFild_ = true;


Три коллекции, это где все элементы, где помеченные элементы и где не помеченные элементы. Например в моем приммере, в верхней части все элементы а в нижней в дереве помеченные (группы), а в детальном представлении в DataGrid не помеченные (сотрудники). Ну тут возможны вариации.

Все это работает на одном абстрактном классе CheckHierarhy, который вы должны наследовать для добавления ваших полей.
Пока я не прекрутил это к данным с Web-сервера, так что могут быть изменения.

Все я погнал дальше работать, мне уже не до этого :).

Комментарии

Популярные сообщения из этого блога

A4tech. Мышь не найдена. Пожалуйста, подсоедините мышь.

SVN: Пропали иконки TortoiseSVN.

Вывод в cmd или bat пустой строки.