2011-02-17 104 views
1

Hallo, 我想要使用Treeview和WPF來顯示層次結構(Is-a)類關係,但是我發現它很困難。Treeview繼承關係

我研究了從網上的一些代碼像

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

這些例子表明一個(具有-A)類的關係,在這種情況下,與WPF +樹形+數據綁定的可視化是相當乾淨和直觀。

相反我有什麼是
public class Device() { }

public class VisionDevice() : Device { }

public class CommunicationDevice() : Device { }

public class SerialComm() : CommunicationDevice {}

public class Webcam : VisionDevice { }

我想可視化這樣

 
Device 
    VisionDevice 
     WebCam 
    CommunicationDevice 
     SerialComm 

一個WPF樹狀結構,這是可以做到的,使用HierarchicalDataTemplate但我找到了解決辦法是不是很優雅。

總之:樹視圖對於有一個階級關係是很好的,但很難適應一個關係。你同意嗎?

+0

讓我們看看您的解決方案。我有一個想法,但我不知道它是否足夠好。 – DHN 2011-02-17 16:28:01

回答

1

結論:樹視圖有利於 具有-一類關係,但難以 適應是-的關係。你同意 嗎?

是,樹視圖是良好的,你知道的根源,必須從它的所有兒童的連接結構(例如一個對象都知道它的屬性和這些屬性中的行爲方式相同轉對象),對於類型來說,它是相當成問題的,因爲traveral是相反的方式,超類對它的子類型一無所知,但子類型知道它們的超類型(不像它們的父類很少引用它的對象)。

爲了可視化首先需要收集所有葉子的類型,並在根檢查哪些類型具有共同分支時,直到您到達目標超類型爲止。不是很優雅...

(或者你可以從根開始,每次查詢所有類型,看它們的直接父母是否是你當前正在查看的類型,就應該更差的性能而言)