2014-02-09 46 views
-1

在之前的question中,我想知道如何爲TreeView設置HierarchicalDataTemplate。這工作正常。我現在的問題是:HierarchicalDataTemplate不顯示沒有兒童的項目

ClassPupils樣子:

public class ClassPupils 
{ 

    public ClassPupils(Class @class) 
    { 
     this.Class = @class; 
     this.Pupils = new List<Pupil>(); 
    } 

    public Class Class { get; set; } 
    public List<Pupil> Pupils { get; set; } 
} 

在我的ViewModel我有一個ObservableCollection<ClassPupils>其中TreeView控件綁定到。

如果ClassPupil在學生集合中沒有學生,則不會顯示該項目。我不明白爲什麼?我還需要在學生集合中顯示沒有學生的ClassPupils。

+0

發佈您的數據模板和樹xaml。 –

回答

1

您的數據模型不正確。我們在代碼中的數據模型經常做而不是,它完全遵循我們數據庫結構的數據模型,尤其是當數據是層次結構時......請記住,我們的表是規範化的,但在代碼中這樣做沒有任何好處。因此,您的數據庫表可能具有子表中的類的外鍵ID,但在業務模型中,通常將其實施爲具有子集合的父類。所以你的情況,你的父母應該看起來更像是這樣的:

public class SchoolClass 
{ 
    public SchoolClass(List<Pupil> pupils) 
    { 
     this.Pupils = pupils; 
    } 

    public List<Pupil> Pupils { get; set; } 

    ... 
} 

沒有必要在代碼中定義一個「弱實體」或「加入表」。鑑於您以前的問題是,您的父母SchoolClass類沒有而不是有一個Pupil s的集合,現在它的確如此,因此再次嘗試您的HierarchicalDataTemplate

+0

這意味着學生班級不知道它是班級。但是這個班有一個小學生集合? – Tomtom

+0

不,這意味着在代碼中,不存在像'PupilClass'這樣的東西......在您的數據庫模型中只有*。 – Sheridan