我在Silverlight 4中使用分层树视图。根据用户的操作,可以清除并重建此树。当发生这种情况时,默认情况下树会折叠,这可能会从用户的角度来看令人讨厌。Silverlight树视图:保存展开/折叠状态
所以,我想以某种方式保存哪些节点被展开,这样我可以在清除并重新加载后恢复树的视觉状态。
我的TreeView的是这样实现的:
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>
我的TreeView的ItemsSource绑定在一个ObservableCollection TreeStructure;
节点是一个包装类,看起来像这样:
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树形视图...
有什么建议吗?
谢谢!
我喜欢这个建议!也许这是一个基本的问题,但我如何绑定TreeViewItem.IsExpanded?似乎我无法直接从我的XAML访问该属性。 – Mathieu
@Tigel:我一直在设置一个IsExpanded属性绑定的例子,但是你的特定虚拟机和安装程序让我留下了一个空白树。你能提供更多的设置代码或完整的工作示例吗? –
是的,我得到它的工作,我会在几个解决方案。感谢您指点我正确的方向。 Silverlight 5解决方案更加优雅!太糟糕我正在使用SL4 :( – Mathieu