我知道已经有一些关于此问题的讨论,但是我还没有能够解决我的问题。通过IsExpanded属性在TreeView中加载父节点的子节点
至于加载需求的项目已经正常工作。我已经子类化TreeViewItem,并且每当'Expanded'事件被触发时,我的TreeViewItemSource将获取下一个节点。
但是,这是一个很混乱,因为我有自定义TreeViewItem,并且,因为我通过TreeView.Items.Add()添加项目,我失去了定义我的节点在XAML中的表示的能力。
这有点不方便,因为我想在每个节点上显示一个图标,并将其放入代码中至少会违反规则。
那么我的问题归结为:是不是可以绑定到IsExpanded属性没有来自Bea Stollnitz的“诡计”?
这是我应该如何它会工作,但不会:
<sdk:TreeView Name="treeView1">
<Style TargetType="sdk:TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
</Style>
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding Children}" >
<TextBlock Text="{Binding Path=Label, Mode=OneWay}" />
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:TreeView>
所以,如果我可以绑定为isExpanded我可以随时取父展开新的节点。
我在做什么错?这不是问题的最佳解决方案吗?任何新想法?
只是要清楚:理想的情况是,我可以从web服务中抓取一堆POCO(举例来说标签和图标),并通过XAML完成所有样式。最好我不用把它们放入其他东西中,因为这非常慢(至少在我目前的实现中,大约有1000个项目,滚动下降非常糟糕)。
在此先感谢。
我如何能赶上扩展事件? 你会如此慷慨,并提供一个片段或更多的解释? – Michael 2010-06-02 13:03:40
添加要显示的代码。 – Stephan 2010-06-02 14:20:38