C# 在XAML中绑定树视图上的2层数据
这里是XAML noobie! 这是我现在得到的:C# 在XAML中绑定树视图上的2层数据,c#,wpf,xaml,treeview,C#,Wpf,Xaml,Treeview,这里是XAML noobie! 这是我现在得到的: MachineList是机器对象的列表(我创建的自定义类) 每台机器内部都有一个驱动器列表(驱动器是另一类) 现在我需要列出这些,让用户检查一些机器或驱动器,显示一些驱动器信息。我的第一个目标是将我的机器列表绑定到一个树状视图(对于根元素)上,并为级别1的孩子绑定驱动器,但我真的做不到 下面是我正在做的: <TreeView ItemsSource="{Binding MachineList}" Name="treeView1">
- MachineList是机器对象的列表(我创建的自定义类)
- 每台机器内部都有一个驱动器列表(驱动器是另一类)
<TreeView ItemsSource="{Binding MachineList}" Name="treeView1">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding DriveList}">
<TextBlock Text="{Binding driveName}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
下面是我如何用C代码声明MachineList的:
publicobservableCollection机器列表{get;set;}
正如我在调试期间可以验证的那样,我的MachineList包含正确的数据(即使驱动器列表已正确填写),但我的Treeview上没有显示任何内容。驱动列表是一个可观察的集合
对象
我做错了什么?按如下所示设置HierarchycalDataTemplate的ItemTemplate
<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>
更新(我尝试过的适合我的代码):
公共类机器
{
私有字符串machinename;
公共字符串机器名
{
获取{return machinename;}
设置{machinename=value;}
}
私有可观察收集驱动列表;
公共可观察收集驱动器列表
{
获取{返回驱动器列表;}
设置{driveList=value;}
}
}
公共类视图模型
{
私人可观测采集机;
公共可观测采集机械师
{
获取{返回机器;}
设置{machines=value;}
}
公共视图模型()
{
ObservableCollection列表=新的ObservableCollection();
添加(newdrivelist(){driveName=“Drive 1”});
机器=新的可观察集合();
添加(新机器(){machineName=“Machine 1”,DriveList=list});
}
}
公共类驱动列表
{
私有字符串驱动器名;
公共字符串驱动器名
{
获取{return drivename;}
设置{drivename=value;}
}
}
谢谢你的建议,但我的名单还是空的!我尝试了预编辑和后编辑代码:(您是否正确设置了DataContext,属性名称是否正确?我搜索了DataContext,但找不到太多关于它的信息!我尝试了设置treeView1.DataConxt=MachineList,但没有设置与此类似的更改。DataContext=new ViewModel()谢谢!现在我让它开始工作了:D我必须更改我的主要TreeView绑定,这里是它的工作原理:{x:Static local:ProjectName.MachineList},我必须使Static成为我的MachineList!我真的需要抓起一本巨大的XAML书籍,好好研究一下:P
<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>
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; }
}
}