簡體   English   中英

TreeView中的分層數據綁定

[英]Hierarchical-DataBinding in TreeView

我有一個叫做ClassWithPupils的類,它看起來像:

public class ClassWithPupils : ViewModelBase
    {
        public ClassWithPupils(IClass @class)
        {
            Class = @class;
            Pupils = new ObservableCollection<IPupil>();
        }


        public IClass Class
        {
            get { return Get<IClass>(); }
            set { Set(value); }
        }

        public ObservableCollection<IPupil> Pupils
        {
            get { return Get<ObservableCollection<IPupil>>(); }
            set { Set(value); }
        }
    }

我有一個ViewModel,其中包含一個ObservableCollection<ClassWithPupils>

private ObservableCollection<ClassWithPupils> classesWithPupils;

public ObservableCollection<ClassWithPupils> ClassesWithPupils
{
    get { return classesWithPupils ?? (classesWithPupils = new ObservableCollection<ClassWithPupils>()); }
}

此集合正確填充了數據庫中的項目。

現在,我想在TreeView顯示ClassesWithPupils層次結構中的所有項目。

到目前為止,我的視圖如下所示:

<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding}">
            <Label Content="{Binding Class.Name}"/>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

因此,類名顯示正確。

不幸的是,我不知道如何將每個ClassWithPupils-Entry的Pupils-Collection作為子級綁定到TreeView中的正確項。

我嘗試了類似的東西:

<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding}">
            <Label Content="{Binding Class.Name}"/>
            <HierarchicalDataTemplate.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Pupils}">
                    <Label Content="{Binding Name}"/>
                </HierarchicalDataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

沒有成功...

所以我的問題是:如何在TreeView中將小學生的名稱顯示為類的子級?

在查看了您的代碼之后,我發現綁定中只有一個錯誤,這可能導致所描述的問題,您應該像這樣在層次模板中綁定到Pupils:

<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Pupils}">
            <Label Content="{Binding Class.Name}"/>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM