Загрузка по-требованию дочерних элементов TreeViewItem в Silvierlight Версия для печати 14/10/09

Отчего-то в Silverlight не работает байндинг к свойству "IsExpanded" у элемента TreeViewItem (в WPF с этим все в порядке) в результате сделать загрузку дочерних узлов по-требованию можно только ручками подключив байндинг. Решение подсмотрел в посте Bea Stollnitz: How can I expand items in a TreeView? – Part II. Итак:

  1. Наследуем классы TreeView и TreeViewItem и ручками подключаем байндинг.
    1. public class TreeViewItemEx : TreeViewItem {
    2.   protected override DependencyObject GetContainerForItemOverride() {
    3.     TreeViewItemEx tvi = new TreeViewItemEx();
    4.     Binding expandedBinding = new Binding("IsExpanded");
    5.     expandedBinding.Mode = BindingMode.TwoWay;
    6.     tvi.SetBinding(TreeViewItemEx.IsExpandedProperty, expandedBinding);
    7.     return tvi;
    8.   }
    9. }
    10.  
    11. public class TreeViewEx : TreeView {
    12.   protected override DependencyObject GetContainerForItemOverride() {
    13.     TreeViewItemEx tvi = new TreeViewItemEx();
    14.     Binding expandedBinding = new Binding("IsExpanded");
    15.     expandedBinding.Mode = BindingMode.TwoWay;
    16.     tvi.SetBinding(TreeViewItemEx.IsExpandedProperty, expandedBinding);
    17.     return tvi;
    18.   }
    19. }
    * This source code was highlighted with Source Code Highlighter.
  2. Подправляем ItemTemplate:
    1. <Grid x:Name="LayoutRoot">
    2.   <Grid.Resources>
    3.     <c:HierarchicalDataTemplate x:Key="treeTemplate" ItemsSource="{Binding Children}">
    4.       <TextBlock Text="{Binding Title}"/>
    5.     </c:HierarchicalDataTemplate>
    6.   </Grid.Resources>
    7.   <l:TreeViewEx
    8.     BorderThickness="0"
    9.     ItemTemplate="{StaticResource treeTemplate}"
    10.     ItemsSource="{Binding}"/>
    11. </Grid>
    * This source code was highlighted with Source Code Highlighter.
  3. Прикручиваем в модели загрузку по-требованию.

Вуаля!

Get Microsoft Silverlight

Исходный код.

| Комментарии

Blog clients. Qumana Версия для печати 06/10/09

Подопытный 5. Выглядит странно (плохо, может версия под mac выглядит нормально?), работает так же. Ссылка вот: http://www.qumana.com/. Проверки русской орфографии нет. Все функции якобы присутствуют, но находятся в зачаточном состоянии.

P.S. Теги параграфов пришлось добавлять ручками (где это видано?) потому как я с начала написания что-то сломал в исходных кодах. По информации из About - заброшен в 2006 году.

| Комментарии [4]

Blog clients. Zoundry Raven Версия для печати 06/10/09

Подопытный номер 4. Присутствует проверка орфографии. Написан на Python'е. Немного кособок. Вцелом приятен. НО. Вставляет совершенно ненужную дополнительную разметку (оказывается он не разрешает отдельный шрифт во время написания поста). Еще раз повторюсь: неплохой вариант. Ах да, вот ссылка: Zoundry Raven.

| Комментарии

« Предыдущая страница
» Следующая страница

Последние статьи

Opml.xml

Rss

About

MeМеня зовут Денис Ларионов.
Работаю программистом. Мне есть что рассказать про: web-бизнес, маркетинг, программирование.

RSS

Я - Слушаю подкаст Radio-T