私は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単に「保留にする」と設定されたューザーは私を助けません。不明な点を言うだけです。特に、他の人がこの問題を理解しており、その解決策はすでに与えられています。 – Syrlia