http://blog.163.com/qiulei_21/blog/static/35071722201122452818390/
在網上找了很多資料,但是都是雲山霧繞的,看了很久看不懂,今天終於在我同事的幫助下搞定了,要充分利用TreeViewItem的IsExpanded屬性啊。
任務:樹節點的展開,包括全展開,點擊節點的展開,某一層節點的展開。
出發:
1.建樹:<Grid>
<TreeView Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="120" />
</Grid>
2.為樹寫節點類(注意繼承類):
public class PropertyNodeItem : TreeViewItem
{
public int Level { get; set; }
public PropertyNodeItem(string name, string DisplayName, int level)
{
this.Level = level;
this.Header = DisplayName;
this.Name = name;
// 在此點下面插入創建對象所需的代碼。
}
}
3.為樹增加節點:
public void BindTreeView()
{
PropertyNodeItem node1 = new PropertyNodeItem("1","中國",0);
PropertyNodeItem node2 = new PropertyNodeItem("2","北京市",1);
PropertyNodeItem node3 = new PropertyNodeItem("3","吉林省",1);
PropertyNodeItem node4 = new PropertyNodeItem("4","上海市",1);
node1.Items.Add(node2);
node1.Items.Add(node3);
node1.Items.Add(node4);
PropertyNodeItem node5 = new PropertyNodeItem("5","海淀區",2);
PropertyNodeItem node6 = new PropertyNodeItem("6","朝陽區",2);
PropertyNodeItem node7 = new PropertyNodeItem("7","大興區",2);
node2.Items.Add(node5);
node2.Items.Add(node6);
node2.Items.Add(node7);
PropertyNodeItem node8 = new PropertyNodeItem("8","白山市",2);
PropertyNodeItem node9 = new PropertyNodeItem("9","長春市",2);
node3.Items.Add(node8);
node3.Items.Add(node9);
PropertyNodeItem node10 = new PropertyNodeItem("10","撫松縣",3);
PropertyNodeItem node11 = new PropertyNodeItem("11","靖宇縣",3);
node8.Items.Add(node10);
node8.Items.Add(node11);
treeView1.Items.Clear();
treeView1.Items.Add(node1);
}
按F5,發現樹是出來了,但是未展開,這樣的樹肯定是影響效果的,那么怎么展開呢,樹本身並沒有提供展開方法,此時,就該IsExpanded出場了。比如你想要樹節點的Level=0的節點展開,只要設node1.IsExpanded = true;那么再F5,就可見效果。舉一反三,想讓所有的展開,則設置每個父節點的IsExpanded = true即可,又方便,又好理解。