Hi,
I'm setting a hierarchical data template over an element programatically, the template are in the XamWebMenu.Resources node. The menu looks good, but I don't get the XamWebMenuItem_Click event. I can get the TextBlock_MouseLeftButtonDown but it doesn't cover the full menu item surface, so if you click in the icon space (at the left) nothing happens.
How can I get the event in the hierarchical template work?
How I set the template:
XamWebMenuItem mi = new XamWebMenuItem() { Header = "Main Menu" }; mi.ItemTemplate = (DataTemplate)MainMenu.Resources["MenuDataTemplate"]; mi.HierarchicalItemTemplate = (Infragistics.Silverlight.Controls.HierarchicalDataTemplate)MainMenu.Resources[ "htemplate" ]; mi.ItemsSource = web.MenuTreeRoot.Childs.WebMenuEntry.Where( wme => wme.IsWebMenuDisplayed ).ToArray(); MainMenu.Items.Insert(0, mi );
The Xaml:
<igMenu:XamWebMenu.Resources> <DataTemplate x:Key="MenuDataTemplate"> <StackPanel Orientation="Horizontal"> <Border Padding="3"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Path=Name}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown" /> </StackPanel> </Border> </StackPanel> </DataTemplate> <ig:HierarchicalDataTemplate x:Key="htemplate" ItemsSource="{Binding Path=Childs.WebMenuEntry}" ItemTemplate="{StaticResource MenuDataTemplate}"> <ig:HierarchicalDataTemplate.DefaultItemsContainer> <DataTemplate> <igMenu:XamWebMenuItem Header="{Binding Name}" DataContext="{Binding}" Click="XamWebMenuItem_Click"> </igMenu:XamWebMenuItem> </DataTemplate> </ig:HierarchicalDataTemplate.DefaultItemsContainer> </ig:HierarchicalDataTemplate> </igMenu:XamWebMenu.Resources>
Try to set your menu item DefaultItemsContainer property to DataTemplate that you use.
mi.DefaultItemsContainer = (DataTemplate)MainMenu.Resources["DefaultItemContainerTemplate"];
Another way to get click event is to use XamWebMenu.ItemClicked event<igMenu:XamWebMenu ItemClicked="MainMenu_ItemClicked">