I have Cutomized a context menu in which main menu is populating but child menu not, bounded object contain parent and chid item but only parent is populating, object MenuItemsCollection contains two MenuVN collection which will be shown as two column in context menu upto this is working, but there is two leaf node for all parent item that is not getting visible even after using HierarchicalDataTemplate
<CollectionViewSource Source="{Binding MenuItemsCollection}"
x:Key="MenuSources"/>
<ControlTemplate x:Key="ContextMenu" TargetType="{x:Type ContextMenu}">
<Border BorderThickness="1" BorderBrush="SteelBlue">
<ItemsControl ItemsSource="{Binding Source={StaticResource
MenuSources}}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
Background="Ivory"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness=".5"
BorderBrush="Black">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<HierarchicalDataTemplate
DataType="{x:Type
local:MenuItemViewModel}" ItemsSource="{Binding MenuItems}">
<MenuItem Header="{Binding
Header}"/>
</HierarchicalDataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</ControlTemplate>
public ObservableCollection<ObservableCollection<MenuItemViewModel>>
MenuItemsCollection { get; set;}
public class MenuItemViewModel
{
public string Header { get; set; }
public ObservableCollection<MenuItemViewModel> MenuItems { get; set; }
}
var MenuItems1 = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Alpha",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Alpha1" },
new MenuItemViewModel { Header = "Alpha2" }
}
},
new MenuItemViewModel { Header = "Beta",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Beta1" },
new MenuItemViewModel { Header = "Beta2" }
}
},
new MenuItemViewModel { Header = "Gamma",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Gamma1" },
new MenuItemViewModel { Header = "Gamma2" }
}
},
new MenuItemViewModel { Header = "Omega",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Omega1" },
new MenuItemViewModel { Header = "Omega2" }
}
},
};
var MenuItems2 = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Alif",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Alpha1" },
new MenuItemViewModel { Header = "Alpha2" }
}
},
new MenuItemViewModel { Header = "Baa",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Beta1" },
new MenuItemViewModel { Header = "Beta2" }
}
},
new MenuItemViewModel { Header = "Thaa",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Gamma1" },
new MenuItemViewModel { Header = "Gamma2" }
}
},
new MenuItemViewModel { Header = "Haa",
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel { Header = "Omega1" },
new MenuItemViewModel { Header = "Omega2"},
}
},
};
MenuItemsCollection = new
ObservableCollection<ObservableCollection<MenuItemViewModel>>();
MenuItemsCollection.Add(MenuItems1);
MenuItemsCollection.Add(MenuItems2);