Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

среда, 25 ноября 2009 г.

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-сервера, так что могут быть изменения.

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

Комментариев нет:

Отправить комментарий