Ho un po 'di una situazione complessa con Wevf Treeview Binding. Ho trascorso gli ultimi 2 giorni a provare su Google, e this è il problema con cui sono uscito, ma non risolve il problema.WPF Treeview Databinding Hierarchal Dati con tipi misti
Ecco la situazione:
Ho un oggetto che assomiglia a questo:
public class Category
{
public string Name { get; set; }
public List<Category> Categories { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
public string Name { get; set;
}
ogni categoria può avere un elenco di oggetti e categorie bambino. Ho una ragione per farlo che ha perfettamente senso per me e l'app che sto scrivendo.
La costruzione oggetto reale può essere simile a questa:
Category - Pharmacy
|-Product - Aspirin
|-Product - Tylenol
|-Category - Tooth Paste
| |-Product - Crest
| |-Product - Colgate
|-Category - Paper Products
|-Category - Toilet Paper
| |-Product - NoName
| |-Product - Charmin
|-Category - Facial Tissue
|-Product - Kleenex
Category - Household
|-Product - Pinesol Cleaner
|-Product - Garbage Bags
Ora, sto cercando di DataBind questo rapporto ad un albero. Vorrei che TreeView sembrasse quasi identico al precedente costrutto oggetto.
Finora ho il mio XAML Treeview simile a questa:
<TreeView x:Name="CategoryList" Margin="8" Grid.Row="2" Grid.RowSpan="2" ItemsSource="{Binding Path=Categories}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type src:Category}" ItemsSource="{Binding Products}">
<StackPanel>
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:Product}">
<StackPanel>
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Questa grande opera per la lista principale delle categorie, e ciascuno dei suoi prodotti secondari. Ma non va più in profondità e mostra le sottocategorie sotto ogni categoria.
C'è un modo per farlo direttamente con Templates in modo che ogni elemento (categoria o prodotto) sia selezionato? Sto usando un pattern MVVM e non voglio ricorrere all'uso del codice, ma lo sarà se è necessario.
Questa è una soluzione perfetta, grazie! Proprio come una nota per chiunque altro, l'ordine in cui aggiungi i contenitori della raccolta alla raccolta composita è l'ordine in cui appaiono nella vista ad albero. Se aggiungi prima le categorie, queste appariranno prima dei prodotti – thorkia