WPF Menu - Как использовать другой шаблон для элементов верхнего уровня

Я хотел бы применить различные шаблоны к моему элементу управления WPF в зависимости от того, является ли элемент элементом верхнего уровня или нет. В частности, я хочу большую иконкувыше текст для предметов верхнего уровня и иконка поменьшеналево текста для других предметов.

Это (работающий) XAML, который я сейчас использую, который правильно форматирует элементы верхнего уровня, но оставляет другие элементы выглядящими глупо и слишком большими:

<WrapPanel Height="Auto">
    <Menu ItemsSource="{Binding DataContext.EventMenu.TopLevel, ElementName=UserControl}">
        <Menu.ItemContainerStyle>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="IsEnabled" Value="true"/>
                <Setter Property="Command" Value="{Binding Command}" />
                <Setter Property="CommandParameter" Value="{Binding EventType}"/>
            </Style>
        </Menu.ItemContainerStyle>
        <Menu.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Image Grid.Row="0" Width="32" Height="32"  Margin="5" VerticalAlignment="Center" Source="{Binding Icon32}"/>
                    <TextBlock Grid.Row="1" Margin="5" Text="{Binding Name}"/>
                </Grid>
            </HierarchicalDataTemplate>
        </Menu.ItemTemplate>
    </Menu>
</WrapPanel>

Я хотел бы, чтобы другие элементы имели такой шаблон:

                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Height="*"/>
                        <ColumnDefinition Height="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Image Grid.Column="0" Width="16" Height="16"  Margin="5" VerticalAlignment="Center" Source="{Binding Icon16}"/>
                    <TextBlock Grid.Column="1" Margin="5" Text="{Binding Name}"/>
                </Grid>

Как я могу иметь два разных шаблона, отличающихся «наивысшим уровнем». Я бы предпочел не добавлять свойство, указывающее, что является элементом верхнего уровня, но может сделать это при необходимости.

Ответы на вопрос(1)

Ваш ответ на вопрос