Я на самом деле разрабатываю свое первое приложение WPF, которое должно отображать все компоненты моего компьютера в виде дерева с иерархическими данными.
Со вчерашнего дня я столкнулся с небольшой проблемой, я прочитал множество примеров дерева.привязка, но мне не удалось связать несколько типов привязок ...
Это должно выглядеть так:
Моя машина (уровень 0)
----- Клавиатуры⬇️(уровень 1)
-------- Keyboard1⬇️ (уровень 2)
-------- Keyboard2⬇️ (уровень 2)
----- OS⬇️ (уровень 1)
----- CPU⬇️ (уровень 1)
-------- CPU1⬇️ (уровень 2)
-------- CPU2⬇️ (уровень 2)
----- VideoCard⬇️ (уровень 1)
---------VideoCard1⬇️ (уровень 2)
--------- VideoCard2⬇️ (уровень 2)
У меня есть модель просмотра со всеми моими компонентами устройства:
DeviceInfo.cs:
public class DeviceInfo
{
public string ComputerName { get; set; }
public Bios Bios { get; set; }
public ComputerSystem ComputerSystem { get; set; }
public List<Keyboard> Keyboards { get; set; }
public OperatingSystem OperatingSystem { get; set; }
public List<Processor> Processors { get; set; }
public List<VideoCard> VideoCards { get; set; }
}
Каждый компонент содержит определенный атрибут, например Keyboard.cs :
public class Keyboard
{
public string Description { get; set; }
public string DeviceID { get; set; }
}
Я пытался сделать что-то подобное для своего дерева, я привязываю данные в Mainwindow так:
DeviceTree.ItemsSource = deviceInfos;
MainWindow.xaml :
<TreeView Margin="10" BorderThickness="2" BorderBrush="Black" Name="DeviceTree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="x:Type data:DeviceInfo" ItemsSource="{Binding Keyboards}">
<TextBlock Text="{Binding Description}"></TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type data:DeviceInfo" ItemsSource="{Binding OS}">
<TextBlock Text="{Binding Version}"></TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type data:DeviceInfo" ItemsSource="{Binding VideoCard}">
<TextBlock Text="{Binding SerialNumber}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
На самом деле это выглядит так в моем древовидном шаблоне:
"Model.DeviceInfo"
Каждая ссылка на подобные примеры будет полезна для меня.Заранее спасибо