Я использую иерархическое древовидное представление в Silverlight 4. Это дерево можно очищать и восстанавливать довольно часто, в зависимости от действий пользователя. Когда это происходит, дерево по умолчанию свернуто, что может раздражать пользователя.
Итак, я хочу каким-то образом сохранить развернутые узлы, чтобы я мог восстановить визуальное состояние моего дерева после его очистки и перезагрузки.
Мое древовидное представление реализовано так:
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:controls2="clr-namespace:System.Windows;assembly=System.Windows.Controls"
<controls:TreeView x:Name="Tree"
ItemsSource="{Binding Source={StaticResource ViewModel}, Path=TreeStructure, Mode=OneWay}"
ItemTemplate="{StaticResource hierarchicalTemplate}" />
<controls2:HierarchicalDataTemplate x:Key="hierarchicalTemplate" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Value.DisplayName}">
</controls2:HierarchicalDataTemplate>
ItemsSource моего древовидного объекта привязан к ObservableCollection TreeStructure;
Node - это класс-оболочка, который выглядит следующим образом:
public class Node
{
public object Value { get; private set; }
public ObservableCollection<Node> Children { get; private set; }
public Node(object value)
{
Value = value;
Children = new ObservableCollection<Node>();
}
}
Довольно стандартные вещи. Я видел несколько решений для WPF, но я могу найти что-нибудь для дерева Silverlight ...
Есть предложения?
спасибо!