[英]Binding 2 layer data on a treeview in XAML
XAML noobie在這里! 這就是我現在得到的:
現在,我需要列出這些內容,並讓用戶檢查一些機器或驅動器,並顯示一些驅動器信息。 我的第一個目標是將我的計算機列表綁定到Treeview(用於根元素)和1級兒童的Drives,但是我真的做不到!
這是我在做什么:
<TreeView ItemsSource="{Binding MachineList}" Name="treeView1">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding DriveList}">
<TextBlock Text="{Binding driveName}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在這里,我如何用C#代碼聲明MachineList:
public ObservableCollection<MyContainerClass.Machine> MachineList{ get; set; }
正如我在調試過程中可以驗證的那樣,我的MachineList包含正確的數據(即使DriveList正確填充),但Treeview上沒有任何顯示。 DriveList是一個ObservableCollection<MyContainerClass.Drive>
對象。
我究竟做錯了什么?
如下設置HierarchicalDataTemplate的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>
更新(我嘗試過的代碼對我有用):
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; }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.