我的项源也是一个嵌套的可观察集合,其中包含分支。
我正在寻找一种递归添加级别的方法,而不是手动将它们嵌套在彼此之间。
谢谢。
发布于 2019-05-13 15:56:50
HierarchicalDataTemplate
应该会为你做这件事。您只需要在TreeView
的DataTemplate
中定义它一次。
我认为我们只需要将HierachicalDataTemplate
的ItemsSource
绑定到您的类的嵌套属性中,它将负责其余的工作。
如果我误解了你的意图,请让我知道。
这是我的尝试:
XAML
<TreeView ItemsSource="{Binding Branches}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Branches}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding Id}"></TextBox>
<TextBox Grid.Column="1" Text="{Binding Name}"></TextBox>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
public class Branch
{
public string Id { get; set; }
public string Name { get; set; }
public ObservableCollection<Branch> Branches { get; set; }
}
主要形式的硬编码值,用于测试目的
public partial class MainWindow : Window
{
public Branch Branch { get; set; }
public MainWindow()
{
Branch = new Branch()
{
Id = "1",
Name = "A",
Branches = new ObservableCollection<Branch>()
{
new Branch()
{
Id = "2",
Name = "B",
Branches = new ObservableCollection<Branch>()
{
new Branch()
{
Id = "3",
Name = "C",
},
new Branch()
{
Id = "3",
Name = "C",
Branches = new ObservableCollection<Branch>()
{
new Branch()
{
Id = "3",
Name = "C",
},
new Branch()
{
Id = "3",
Name = "C",
}
}
}
}
},
new Branch()
{
Id = "2",
Name = "B",
Branches = new ObservableCollection<Branch>()
{
new Branch()
{
Id = "3",
Name = "C",
}
}
}
}
};
InitializeComponent();
this.DataContext = this.Branch;
}
}
结果
https://stackoverflow.com/questions/56104924
复制相似问题