Ich möchte in einem TreeviewWie Sammlungen mit gleichem Typ auf derselben Ebene in TreeView WPF binden
private ObservableCollection<SectionHeader> _sections;
public ObservableCollection<SectionHeader> Sections
{
get { return _sections ?? (_sections = new ObservableCollection<SectionHeader>()); }
set { _sections = value; NotifyOfPropertyChange(() => Sections); }
}
Hier die folgende Sammlung angezeigt ist, wie Section und verschachtelte Typen aussehen
public class SectionHeader
{
public string ID { get; set; }
public string Name { get; set; }
private ObservableCollection<SectionItem> _items;
public ObservableCollection<SectionItem> Items { get { return _items ?? (_items = new ObservableCollection<SectionItem>()); } }
}
public class SectionItem
{
public string Title { get; set; }
public int ID { get; set; }
private ObservableCollection<ProductCalculatorTemplate> _products;
public ObservableCollection<ProductCalculatorTemplate> Products { get { return _products ?? (_products = new ObservableCollection<ProductCalculatorTemplate>()); } }
private ObservableCollection<ProductCalculatorTemplate> _productsOptionTwo;
public ObservableCollection<ProductCalculatorTemplate> ProductsOptionTwo { get { return _productsOptionTwo ?? (_productsOptionTwo = new ObservableCollection<ProductCalculatorTemplate>()); } }
}
public class ProductCalculatorTemplate
{
public string Product { get; set; }
public double NoOfCoats { get; set; }
public double PackSize { get; set; }
}
Und hier ist, wie mein XAML-Code für TreeView wie
<TreeView ItemsSource="{Binding Sections}" Background="GhostWhite">
<TreeView.Resources>
<HierarchicalDataTemplate DataType= "{x:Type ViewModels:SectionHeader}" ItemsSource = "{Binding Path=Items}">
<StackPanel Orientation="Horizontal" Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType = "{x:Type ViewModels:SectionItem}" ItemsSource = "{Binding Path=Products}">
<StackPanel Orientation="Horizontal" Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
<TextBlock Text="{Binding Title}"/>
</StackPanel>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate DataType = "{x:Type ViewModels:ProductCalculatorTemplate}" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Product}"/>
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
sieht Dies ist die Ausgabe des obigen Codes ist
Aber ich möchte die Informationen in einer Art und Weise angezeigt werden, dass unter Fenomastic einen untergeordneten Knoten erscheint dem Namen „Option 1“, die alle prdoucts und 2. Kind von Fenomastic sollte „Option 2“ sein, die nach unten sollte Liste unten sollte Liste all ProductsOptionTwo Mitglied von SectionItem.