WPF에서 TreeView 컨트롤로 HierarchicalDataTemplate을 사용하려고합니다. 뷰 모델 클래스를 만들었지 만 프로그램을 시작할 때마다 System.StackOverflowException이 발생합니다. 왜 이런 일이 일어 나는지 나는 모른다. 여기 HierarchicalDataTemplate 바인딩 할 때 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;
}
}