8

鉴于非常简单的 wpf 应用程序

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="800">
    <Grid>
        <ToolBar Height="50" >
            <MenuItem Header="Test1" />
            <MenuItem Header="Test2" />

            <StackPanel Orientation="Horizontal">
                <Separator />
                <MenuItem Header="Test3" />
                <MenuItem Header="Test4" />
                <MenuItem Header="Test5" />
            </StackPanel>
        </ToolBar>
    </Grid>
</Window>

Separator 元素缩小为空。如果我在 StackPanel 开始之前放置分隔符,它将显示出来。为什么会这样?是否有可以在某处应用的样式设置来避免这种情况?

4

3 回答 3

16

正在以某种方式StackPanel改变方向。Separator请注意,如果您明确告诉Separator20 单位宽,则Separator将是水平线而不是垂直线。这是正在发生的事情的一部分。

如果将 aLayoutTransform应用于Separator,它会撤消StackPanel正在做的任何事情。

<Separator>
    <Separator.LayoutTransform>
        <RotateTransform
            Angle="90" />
    </Separator.LayoutTransform>
</Separator>

不过,我不明白需要 a StackPanel

于 2009-08-13T20:40:06.980 回答
4

分隔符默认为水平方向。

直接放置在 ToolBar 内的分隔符的样式已更改,因为 Toolbar 会覆盖其项目的默认样式。放置在别处的分隔符获得分隔符的默认样式。因此,如果您想将分隔符保留在 StackPanel 中,则需要自己设置分隔符的样式。

此 CodeProject 讨论包括用于完成此操作的示例代码。

参考:Adam Nathan 发布的WPF ,第 117 页。

于 2010-05-12T22:32:29.113 回答
2

工具栏对您放入的内容很有趣。当所有元素都不是 ToolBar 的直接子元素时,它们会变得有趣。分组元素是 ToolBarTray(工具栏组)、ToolBar 和 ToolBarPanel(逻辑,用于折叠溢出)。这是 WPF 想要看到的:

<Grid>
    <ToolBarTray>
        <ToolBar Height="Auto">
            <ToolBarPanel Orientation="Horizontal" ToolBar.OverflowMode="AsNeeded"/>
            <MenuItem Header="Test1" />
            <Separator/>
            <MenuItem Header="Test2" />
        </ToolBar>
        <ToolBar Height="Auto">
            <ToolBarPanel ToolBar.OverflowMode="Never"/>
            <MenuItem Header="Test3" />
            <MenuItem Header="Test4" />
            <Separator/>
            <MenuItem Header="Test5" />
            <ToolBarPanel ToolBar.OverflowMode="AsNeeded"/>
            <MenuItem Header="Test6" />
            <MenuItem Header="Test7" />
        </ToolBar>
    </ToolBarTray>
</Grid>
于 2009-08-13T20:55:17.270 回答