色尼玛亚洲综合影院,亚洲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中使用遞歸構造關系圖,轉載需保留來源!

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

主站蜘蛛池模板: 武义县| 汉中市| 佛教| 闵行区| 长岭县| 大荔县| 阳原县| 义马市| 科技| 琼结县| 辽宁省| 广灵县| 晋州市| 红桥区| 临泽县| 南乐县| 常熟市| 大荔县| 沈阳市| 大庆市| 台湾省| 清涧县| 得荣县| 靖远县| 万安县| 鄱阳县| 宜黄县| 基隆市| 班玛县| 临高县| 甘肃省| 高州市| 龙口市| 繁峙县| 贵阳市| 津市市| 陇南市| 锡林郭勒盟| 庄浪县| 高邮市| 含山县|