子菜单风格各异

时间:2012-07-20 18:27:19

标签: .net wpf xaml

我有一个菜单,其中有几个子菜单放在分隔符之间,如下所示:

<Menu x:Name="mainMenu">

    <MenuItem x:Name="mainSubMenu" Header="Menus">

        <MenuItem x:Name="topMenuItem" Header="TopSubMenu">
        <MenuItem/>
        <MenuItem/>
        <MenuItem/>
    </MenuItem>

        <Separator/>

    <MenuItem x:Name="middleMenuItem" Header="MiddleSubMenu">
        <MenuItem Header="MI1"/>
        <MenuItem Header="MI2"/>
        <MenuItem Header="MI3"/>
        <MenuItem Header="MI4"/>
    </MenuItem>

    <Separator/>

        <MenuItem x:Name="bottomMenuItem" Header="Bottom" />
    </MenuItem>

</Menu>

我为中间子菜单创建了一个样式,允许滚动浏览不同的菜单项。我希望顶部和底部子菜单具有默认样式。我怎么做?如何为不同的子菜单设置不同的样式? 谢谢!

2 个答案:

答案 0 :(得分:1)

考虑使用样式资源,如:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style x:Key="myStyleKey" TargetType="MenuItem">
            <!-- Your style definition goes here -->
        </Style>
    </Window.Resources>
    <Grid>
        <Menu x:Name="mainMenu">

            <MenuItem x:Name="mainSubMenu" Header="Menus">

                <MenuItem x:Name="topMenuItem" Header="TopSubMenu">
                    <MenuItem/>
                    <MenuItem/>
                    <MenuItem/>
                </MenuItem>

                <Separator/>

                <!-- Set style here -->
                <MenuItem Style="{StaticResource myStyleKey}" x:Name="middleMenuItem" Header="MiddleSubMenu">
                    <MenuItem Header="MI1"/>
                    <MenuItem Header="MI2"/>
                    <MenuItem Header="MI3"/>
                    <MenuItem Header="MI4"/>
                </MenuItem>

                <Separator/>

                <MenuItem x:Name="bottomMenuItem" Header="Bottom" />
            </MenuItem>

        </Menu>
    </Grid>
</Window>

您可以单独为每个菜单项使用此模式。

答案 1 :(得分:0)

是的,给你的样式一个键,并通过该键指定你想要在每个MenuItem上的样式:

e.g。

     <Style x:Key="MyStyle1" TargetType="{x:Type MenuItem}">
        <blahblahblah/>
     </Style>

     <MenuItem Style="{StaticResource MyStyle1}">

HTH!

Janene