绑定和递归

时间:2013-04-08 12:09:01

标签: binding treeview observablecollection

我正在开发一个将实体绑定到树视图的项目。该实体包括:id,idParent,Name,ChildrenElements(如果添加了任何子节点,则为可观察集合)。 该程序应该将对象绑定到树视图,并在任何子节点的情况下添加节点。

实体:

class Item
{
    int id;
    int parentId;
    string name;
    ObservableCollection<Item>childrenElements = new ObservableCollection<Item>();

    public int Id
    {
        get { return id; }
        set { id = value; }
    }

    public int ParentId
    {
        get { return parentId; }
        set { parentId = value; }
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public ObservableCollection<Item> ChildrenElements
    {
        get { return childrenElements; }
        set { childrenElements = value; }
    }

}

视图模型:

class ViewModel
{
    public ObservableCollection<Item> OCItem { get; set; }
    Item item;

    public ViewModel()
    {
        OCItem = new ObservableCollection<Item>();
    }
}

代码隐藏:

public partial class MainWindow : Window
{
    ViewModel vm;
    public MainWindow()
    {
        InitializeComponent();
        vm = new ViewModel();
        this.DataContext = vm;

        vm.OCItem.Add(new Item() { Name = "Frederic" });
        vm.OCItem.Add(new Item() { Name = "John" });
    }
}

XAML:

<Grid>
<TreeView Height="208" HorizontalAlignment="Left" Margin="38,42,0,0" Name="treeView1" VerticalAlignment="Top" Width="177" ItemsSource="{Binding OCItem}">
            <TreeView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Name}"/>
                </DataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>

我的问题是,是否可以在实体中创建(以及如何)新的可观察集合,以便该实体在其自己的可观察集合中具有其他实体,并将其作为该实体的子节点添加到树视图中。等等。

0 个答案:

没有答案