首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在StackPanel中,WPF ToolBar分隔符缩小为零

在StackPanel中,WPF ToolBar分隔符缩小为零
EN

Stack Overflow用户
提问于 2009-08-13 20:26:02
回答 3查看 11.7K关注 0票数 8

给定非常简单的wpf应用程序

代码语言:javascript
运行
复制
<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开始之前,它就会出现。这一切为什么要发生?有没有可以应用的样式设置来避免这种情况?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-13 20:40:07

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

如果您将LayoutTransform应用于Separator,它将撤消StackPanel正在执行的任何操作。

代码语言:javascript
运行
复制
<Separator>
    <Separator.LayoutTransform>
        <RotateTransform
            Angle="90" />
    </Separator.LayoutTransform>
</Separator>

不过,我不明白为什么需要一个StackPanel

票数 16
EN

Stack Overflow用户

发布于 2010-05-13 06:32:29

分隔符默认为水平方向。

直接放置在ToolBar中的分隔符的样式会发生更改,因为工具栏会重写其项的默认样式。放置在别处的分隔符将获得分隔符的默认样式。因此,如果您想将分隔符保留在StackPanel中,则需要自己设置它的样式。

This CodeProject discussion包含实现此功能的示例代码。

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

票数 4
EN

Stack Overflow用户

发布于 2009-08-13 20:55:17

ToolBars对你放在里面的东西很有趣。当所有元素都不是ToolBar的直接子元素时,它们就变得有趣了。分组元素是ToolBarTray (工具栏分组)、ToolBar和ToolBarPanel (逻辑,用于折叠溢出)。这是WPF想要看到的:

代码语言:javascript
运行
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1274370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档