TreeView отображение разных элементов в открытом узле
Есть модель:
public class Menu_c : INotifyPropertyChanged
{
private int kod;
private string nazv;
private double koef_cen;
private double koef_ves;
private Edinitci ed;
public int Kod { get { return kod; } set { kod = value; } }
public string Nazv { get { return nazv; } set { nazv = value; } }
public double Koef_cen { get { return koef_cen; } set { koef_cen = value; } }
public double Koef_ves { get { return koef_ves; } set { koef_ves = value; } }
public Edinitci Ed { get { return ed; } set { ed = value; } }
public ObservableCollection<Sostav_menu_c> sostav { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class Group
{
private int kod;
private string nazv;
public int Kod { get { return kod; } set { kod = value; } }
public string Nazv { get { return nazv; } set { nazv = value; } }
}
public class Tree
{
private Group g_g;
public ObservableCollection<Tree> c_g { get; set; }
public ObservableCollection<Menu_c> menu { get; set; }
public Group G_g { get { return g_g; } set { g_g = value; } }
}
В Tree храниться переменная G_g - группа-владелец. У неё есть список блюд (коллекция menu) и список дочерних групп (коллекция c_g с типом данных Tree).
Я хотела отобразить список, примерно как на следующей катинке:
Но в моём случае происходит следующее отображение:
Во втором случае отображаются только вложенные группы, а блюда отображаются только в конечных узлах.
Привязка к коллекции:
public static ObservableCollection<Tree> trees = new ObservableCollection<Tree>(); //Коллекция
Форма:
{
public Menu()
{
InitializeComponent();
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
Util.Set_trees();
LI.ItemsSource = Util.trees;
}
}
TreeView:
<TreeView x:Name="LI" Grid.Column="0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=c_g}">
<StackPanel>
<TextBlock Text="{Binding Path=G_g.Nazv}"></TextBlock>
</StackPanel>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=menu}">
<StackPanel>
<TextBlock Text="{Binding Path=G_g.Nazv}"></TextBlock>
<Label Content="{Binding Path=Name}"></Label>
</StackPanel>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>

