我正在使用自定义对象TreeView
。延迟加载TreeViewItem自定义加载方法取决于它们的嵌套类型
目标:在TreeViewItem.Expanded
事件我想打电话给A.
或B.LoadChilds()
取决于嵌套式的实现延迟加载。
型号:
public class A
{
public A()
{
Childs = new ObservableCollection<B>();
}
public string Name {get; set; }
public ObservableCollection<B> Childs { get; set; }
public void LoadChilds(DBConnection connection) //Type is unimportant
{
// adding childs
}
}
public class B
{
public B()
{
Childs = new ObservableCollection<B>(); //Yes, rekursiv
}
public string Name {get; set; }
public ObservableCollection<B> Childs { get; set; }
public void LoadChilds(DBConnection connection)
{
// adding childs
}
}
MainWindow.xaml
<TreeView x:Name="Tree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type model:A}" ItemsSource="{Binding Childs}">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type model:B}" ItemsSource="{Binding Childs}">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
代码隐藏
//Init
List<A> ListOfAs = getAs(dbConnection);
Tree.ItemsSource = ListOfAs;
问题:达成目标的最佳方式是什么?
我q uestion简单地设置为“搁置”并不能帮助我。只是说什么不清楚。特别是其他人理解这个问题,并且已经给出了解决方案。 – Syrlia