我知道已經有一些關於此問題的討論,但是我還沒有能夠解決我的問題。通過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