给定非常简单的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开始之前,它就会出现。这一切为什么要发生?有没有可以应用的样式设置来避免这种情况?
发布于 2009-08-13 20:40:07
StackPanel
以某种方式改变了Separator
的方向。请注意,如果您显式地告诉Separator
为20个单位宽,则Separator
将是水平线而不是垂直线。这是正在发生的事情的一部分。
如果您将LayoutTransform
应用于Separator
,它将撤消StackPanel
正在执行的任何操作。
<Separator>
<Separator.LayoutTransform>
<RotateTransform
Angle="90" />
</Separator.LayoutTransform>
</Separator>
不过,我不明白为什么需要一个StackPanel
。
发布于 2010-05-13 06:32:29
分隔符默认为水平方向。
直接放置在ToolBar中的分隔符的样式会发生更改,因为工具栏会重写其项的默认样式。放置在别处的分隔符将获得分隔符的默认样式。因此,如果您想将分隔符保留在StackPanel中,则需要自己设置它的样式。
This CodeProject discussion包含实现此功能的示例代码。
参考资料: Adam Nathan发布的WPF,第117页。
发布于 2009-08-13 20:55:17
ToolBars对你放在里面的东西很有趣。当所有元素都不是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>
https://stackoverflow.com/questions/1274370
复制相似问题