내 TreeView에 대해 ItemsSource를 제공하는 두 개의 다른 클래스가 있습니다.TreeView, HierarchicalDataTemplate 및 재귀 데이터
public class TreeViewModel : ViewModelBase
{
public ObservableCollection<NodeViewModel> Items { get; set; }
}
public class NodeViewModel : ViewModelBase
{
public string Id { get; set; }
public string Name { get; set; }
public ObservableCollection<NodeViewModel> Children { get; set; }
}
이제 TreeViewModel의 항목을 표시하고 NodeViewModel에서 제공하는 계층 적 데이터를 표시하도록 TreeView를 설정합니다.
여기 내 XAML입니다
<Window x:Class="TreeViewMasterDetails.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TreeViewMasterDetails"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TreeView Height="Auto"
HorizontalAlignment="Stretch"
Margin="10"
VerticalAlignment="Stretch"
Width="Auto">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="x:Type local:TreeViewModel" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type local:NodeViewModel" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
</Window>
은 TreeView
의 ItemsSource
로 Items
를 제공하기 위해 노력했다. 아무것도 표시하지 않으면 데이터가 계층 적으로 표시되지 않습니다.
TreeView.Resources
대신 ItemTemplate
을 사용해 보았습니다.
무엇이 잘못 되었나요?
아마도 처음에는 문제가 TextBlock Text Binding
입니까? NodeViewModel
의 Name
속성을 Items
에 표시하려고합니다.
이 템플릿은 [WPF TreeView HierarchicalDataTemplate - 여러 자식 컬렉션이있는 개체에 바인딩] [1]과 중복 된 것으로 생각됩니다. [1] : http://stackoverflow.com/questions/1912481/wpf-treeview-hierarchicaldatatemplate-binding-to-object-with-multiple-child-co – Schollii
그래, 난 이미 보았다. 그러나 여기서는 효과가 없습니다. –
내 업데이트 된 질문을 참조하십시오 –