解决方法在WPF中破坏工具栏中的菜单样式

时间:2011-07-04 17:19:52

标签: wpf menu styles toolbar

我很难在<Menu/>内玩<Toolbar/>来玩得很开心。我的示例如下所示放在VS2010的默认WpfApplication项目模板的空窗口中:

<DockPanel>
    <ToolBar DockPanel.Dock="Top">
        <Button Content="Button 1"/>
        <Button Content="Button 2"/>
        <Separator/>
        <CheckBox Content="CheckBox 1"/>
        <CheckBox Content="CheckBox 2"/>
        <Separator/>
        <Menu>
            <MenuItem Header="Menu">
                <MenuItem Header="File">
                    <MenuItem Header="Copy"/>
                    <MenuItem Header="Paste"/>
                </MenuItem>
            </MenuItem>
        </Menu>
    </ToolBar>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="Menu">
            <MenuItem Header="File">
                <MenuItem Header="Copy"/>
                <MenuItem Header="Paste"/>
            </MenuItem>
        </MenuItem>
    </Menu>
    <Grid>

    </Grid>
</DockPanel>

默认样式错误地对齐标签和悬停指示符:

menu-in-toolbar styling fail

我不是设计师,也不是WPF大师,所以我将菜单风格更接近按钮的简单尝试都发生了灾难性的失败。

有没有一个简单的(理想情况下基于Toolbar.MenuStyleKey)样式让菜单重新排队?

1 个答案:

答案 0 :(得分:1)

这是一个似乎在KaXaml中起作用的快速事项:

    <ToolBar DockPanel.Dock="Top">
        <Button Content="Button 1"/>
        <Button Content="Button 2"/>
        <Separator/>
        <CheckBox Content="CheckBox 1"/>
        <CheckBox Content="CheckBox 2"/>
        <Separator/>
        <Menu Margin="0, -1, 0, 0" Style="{x:Null}">
            <MenuItem Header="Menu">
                <MenuItem Header="File">
                    <MenuItem Header="Copy"/>
                    <MenuItem Header="Paste"/>
                </MenuItem>
            </MenuItem>
        </Menu>
    </ToolBar>