我想在 WPF 中将 HierarchicalDataTemplate 与 TreeView 控件一起使用。我创建了一个视图模型类,但每次程序启动时都会发生 System.StackOverflowException。我不知道为什么会这样。
这是 WPF 标记:
<TreeView Grid.Row="2" ItemsSource="{Binding ImportTasks}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type VM:SyncToolViewModel}" ItemsSource="{Binding Path=ImportTasks}">
<Label Content="{Binding }"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type VM:VmImportTask}" ItemsSource="{Binding Path=ImportTasks.Tables}">
<Label Content="{Binding }"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
这是代码部分:
public class SyncToolViewModel
{
public DBSyncToolLib.DataContext DataContext { get; set; }
private List<VmImportTask> _ImportTasks;
public List<VmImportTask> ImportTasks
{
get
{
if (_ImportTasks == null)
{
_ImportTasks = (from IT in DataContext.ImportTask
select
new VmImportTask()
{
DBImportTask = IT
}
).ToList();
}
return _ImportTasks;
}
}
}
public class VmImportTask
{
public DBSyncToolLib.Schema.ImportTask DBImportTask { get; set; }
public List<VmImportTaskTable> Tables
{
get
{
var L = (from B in DBImportTask.ImportTaskTable
select new VmImportTaskTable()
{
DBImportTaskTable = B
}).ToList();
return L;
}
}
public override string ToString()
{
return this.DBImportTask.Name;
}
}