【发布时间】:2019-05-09 12:18:49
【问题描述】:
我有那个内部的实体框架模型,用户可以根据需要将子类别制作成子类别。
public class Category
{
public Category()
{
SubCategories = new ObservableCollection<Category>();
}
[Column("id")]
public int Id { get; set; }
[StringLength(100)]
public string Name { get; set; }
[Column("ParentID")]
public int? ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual ObservableCollection<Category> SubCategories { get; set; }
}
我正在考虑使用 foreach 填充树视图,如下所示:
Categories = new ObservableCollection<Category>(db.Categories.Where(x => x.ParentID == null));
foreach (var item in Categories)
{
SubCategoriesModel = new ObservableCollection<Category>(db.Categories.Where(x => x.ParentID == item.Id));
foreach (var subitem in SubCategoriesModel)
{
item.SubCategories.Add(subitem);
}
}
<TreeView Grid.Row="0" ItemsSource="{Binding Categories}" MinWidth="220">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type data:Categories}" ItemsSource="{Binding SubCategories}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Id}" Margin="3 2" />
<TextBlock Text=" - "/>
<TextBlock Text="{Binding Name}" Margin="3 2" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
<e:Interaction.Behaviors>
<behaviours:BindableSelectedItemBehavior SelectedItem="{Binding SelectedTreeCategory, Mode=TwoWay}" />
</e:Interaction.Behaviors>
</TreeView>
我意识到这行不通。有更好的方法吗?
【问题讨论】:
-
@dymanoid 对此感到抱歉,这是一个错字,它会获取数据但只有一个级别,除非我想永远重复 foreach 语句
-
我看到的唯一选择是在项目展开时加载它,而不是在那之前。
标签: c# wpf entity-framework treeview