Context Menu-Child menu is not populating - WPF

Viewed 29

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);
0 Answers
Related