色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Silverlight中使用遞歸構造關系圖

  這兩天遇到一個問題,項目中需要在silverlight中使用連接圖的方式來顯示任務之間的關系,總體有父子和平行兩種,昨天在改同事的代碼,一直出問題,索性晚上寫了一下實現方法。

  需求

  有一個List對象中存了若干個Task,這些Task對象通過ParentID屬性進行關聯,現在要求將這個List中的任務使用圖的方式形成如父子關系和平行關系的圖示例如下圖:

image

  實現方法思考

  剛開始接到這個任務我就想著遞歸應該可以搞定了,但是仔細考慮才發現每個任務的子任務需要在一定區域內才行,需要計算子級和子級之間的距離,如果使用遞歸,例如上圖的元素“12”的位置就沒有辦法很好確定了。

  我決定將途中的節點抽象為一個類,這個類至少應該含有上邊界top,左邊屆left及節點的名稱等屬性,然后從這個List對象中構造出每個節點的屬性。

  實現步驟

  1,首先我們為圖模擬一個數據源,注意其中的任務是通過ParentID關聯的。

代碼private static List<Task> listTask; 
        
public MainPage() 
        { 
            InitializeComponent(); 
            listTask 
= new List<Task>(); 
            listTask.Add(
new Task() { ID = 1, ParentID = 0, Name = "1" }); 
            listTask.Add(
new Task() { ID = 2, ParentID = 1, Name = "11" }); 
            listTask.Add(
new Task() { ID = 3, ParentID = 1, Name = "12" }); 
            listTask.Add(
new Task() { ID = 4, ParentID = 2, Name = "21" }); 
            listTask.Add(
new Task() { ID = 5, ParentID = 2, Name = "22" }); 
            listTask.Add(
new Task() { ID = 6, ParentID = 3, Name = "31" }); 
            listTask.Add(
new Task() { ID = 7, ParentID = 3, Name = "32" }); 
            listTask.Add(
new Task() { ID = 8, ParentID = 3, Name = "33" }); 
            listTask.Add(
new Task() { ID = 9, ParentID = 4, Name = "42" }); 
            listTask.Add(
new Task() { ID = 10, ParentID =4, Name = "42" }); 
            listTask.Add(
new Task() { ID = 11, ParentID =3, Name = "34" }); 
            listTask.Add(
new Task() { ID = 12, ParentID = 5, Name = "51" }); 
            listTask.Add(
new Task() { ID = 13, ParentID = 8, Name = "81" }); 
            
this.Loaded += new RoutedEventHandler(MainPage_Loaded); 
        }

NET技術Silverlight中使用遞歸構造關系圖,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 佛学| 安顺市| 互助| 南郑县| 梧州市| 揭西县| 孟津县| 太保市| 高淳县| 澳门| 合川市| 敦化市| 南丰县| 中阳县| 犍为县| 木兰县| 买车| 宜宾县| 法库县| 青川县| 兴和县| 福建省| 恩施市| 红原县| 策勒县| 贵德县| 乡宁县| 高阳县| 双辽市| 囊谦县| 蕉岭县| 石河子市| 双江| 黎平县| 和田市| 利津县| 马关县| 沅陵县| 贵州省| 化德县| 湖州市|