HierarchicalDataTemplate [WPF]
Есть 2 таблицы в MS SQL Server. Нужно получить Tree View такого вида:

Я получаю данные из таблиц используя Entity Framework. Код Context'a:
public partial class MSGContext : DbContext
{
public MSGContext()
: base("name=MSGContext")
{
}
public virtual DbSet<article> article { get; set; }
public virtual DbSet<section> section { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<article>()
.Property(e => e.articleName)
.IsFixedLength();
modelBuilder.Entity<section>()
.Property(e => e.sectionName)
.IsFixedLength();
modelBuilder.Entity<section>()
.HasMany(e => e.article)
.WithRequired(e => e.section)
.HasForeignKey(e => e.articleSection)
.WillCascadeOnDelete(false);
}
}
Модель таблицы article:
[Table("article")]
public partial class article
{
public int articleId { get; set; }
[Required]
[StringLength(200)]
public string articleName { get; set; }
public int articleSection { get; set; }
[Required]
public string articleText { get; set; }
public byte[] articlePhoto { get; set; }
public virtual section section { get; set; }
}
Модель таблицы section:
[Table("section")]
public partial class section
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public section()
{
article = new HashSet<article>();
}
public int sectionId { get; set; }
[Required]
[StringLength(100)]
public string sectionName { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<article> article { get; set; }
}
Каким образом можно заполнить Tree View используя HierarchicalDataTemplate?
Ответы (1 шт):
Автор решения: Zan Person
→ Ссылка
xaml:
<Window.Resources>
<DataTemplate x:Key="ArticleTemplate">
<TextBlock Text="{Binding articleName}"/>
</DataTemplate>
<HierarchicalDataTemplate x:Key="SectionTemplate"
ItemsSource="{Binding article}"
ItemTemplate="{StaticResource ArticleTemplate}">
<TextBlock Text="{Binding sectionName}" />
</HierarchicalDataTemplate>
</Window.Resources>
<TreeView x:Name="tv" ItemsSource="{Binding}" ItemTemplate="{StaticResource SectionTemplate}"/>
Заполнение TreeView:
MSGContext db = new MSGContext();
tv.DataContext = db.section.ToList();

