Posted 12 September 2019, 3:37 pm EST
Hi Lutz,
Developer replied as follows:
When we use C1Menu.ItemContainerStyle, we are creating our own style for C1MenuItem inside C1Menu and hence it doesn’t follow the applied theme anymore. So, In order to avoid using ItemContainerStyle for enabling/disabling a menu item you can directly use C1MenuItems in your binding source instead of creating custom MenuItem :
CodeBehind:
public ObservableCollection<C1MenuItem> MenuItem
{
get { return (ObservableCollection<C1MenuItem>)GetValue(MenuItemProperty); }
set { SetValue(MenuItemProperty, value); }
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var subMenuItem = new C1MenuItem()
{
Header = "File",
IsEnabled = true
};
subMenuItem.Items.Add(new C1MenuItem()
{
Header = "Header 2 1",
IsEnabled = true
});
subMenuItem.Items.Add(new C1MenuItem()
{
Header = "Header 2 2",
IsEnabled = true
});
subMenuItem.Items.Add(new C1MenuItem()
{
Header = "Header 2 2",
IsEnabled = true
});
subMenuItem.Items.Add(new C1MenuItem()
{
Header = "Header 2 2",
IsEnabled = false
});
MenuItem = new ObservableCollection<C1MenuItem>()
{
subMenuItem,
};
}
XAML:
<c1:C1Menu c1:C1DockPanel.Dock="Top" ItemsSource="{Binding MenuItem}" x:Name="menu2" Height="30" FontSize="12" FontFamily="Verdana">
<c1:C1Menu.ItemTemplate>
<c1:C1HierarchicalDataTemplate DataType="{x:Type c1:C1MenuItem}" ItemsSource="{Binding Path=Items}">
<TextBlock Text="{Binding Header}" />
</c1:C1HierarchicalDataTemplate>
</c1:C1Menu.ItemTemplate>
</c1:C1Menu>
Hope this will help you. However, please let us know if there is some specific need to use custom MenuItem?
Regards,
Basant