首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在XAML中的treeview上绑定2层数据

在XAML中的treeview上绑定2层数据
EN

Stack Overflow用户
提问于 2014-03-19 00:14:23
回答 1查看 152关注 0票数 0

XAML努比来了!我现在得到的是:

  • MachineList,是机器对象的列表(我创建的一个自定义类)
  • 每个机器内部都有一个驱动器列表(驱动器是另一个类)

现在我需要列出这些,让用户检查一些机器或驱动器,显示一些驱动器信息。我的第一个目标是将我的机器列表绑定到Treeview (对于根元素),并为第一级子级驱动,但我真的做不到!

我在这里做的是:

代码语言:javascript
运行
AI代码解释
复制
<TreeView ItemsSource="{Binding MachineList}" Name="treeView1">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding DriveList}">
            <TextBlock Text="{Binding driveName}" />
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

这里我是如何在MachineList代码中声明C#的:

代码语言:javascript
运行
AI代码解释
复制
public ObservableCollection<MyContainerClass.Machine> MachineList{ get; set; }

正如我在调试期间可以验证的那样,我的MachineList包含正确的数据(即使DriveList被正确填充),但是在Treeview上没有显示任何内容。DriveList是一个ObservableCollection<MyContainerClass.Drive>对象。

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-19 00:35:52

将ItemTemplate设置为HierarchicalDataTemplate,如下所示。

代码语言:javascript
运行
AI代码解释
复制
<TreeView ItemsSource="{Binding MachineList}" Name="treeView1">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding DriveList}">
                    <TextBlock Text="{Binding machineName}" />
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding driveName}" />
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

更新(我尝试过的对我有用的代码):

代码语言:javascript
运行
AI代码解释
复制
public class Machines
    {
        private string machinename;

        public string machineName
        {
            get { return machinename; }
            set { machinename = value; }
        }
        private ObservableCollection<DriveList> driveList;

        public ObservableCollection<DriveList> DriveList
        {
            get { return driveList; }
            set { driveList = value; }
        }


    }

    public class ViewModel
    {
        private ObservableCollection<Machines> machines;

        public ObservableCollection<Machines> MachineList
        {
            get { return machines; }
            set { machines = value; }
        }
        public ViewModel()
        {
            ObservableCollection<DriveList> list= new ObservableCollection<DriveList>();
            list.Add(new DriveList() { driveName = "Drive 1" });
            machines = new ObservableCollection<Machines>();
            machines.Add(new Machines() { machineName = "Machine 1", DriveList =list  });
        }
    }

    public class DriveList
    {
        private string drivename;

        public string driveName
        {
            get { return drivename; }
            set { drivename = value; }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22499824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档