应该如何使用StatusBarItem
类? StatusBar
内容中的每个元素都应该被包裹吗?
我不太了解StatusBarItem
如何影响StatusBar
布局。似乎可以在HorizontalAlignment
上使用StatusBarItem
,但不能将元素直接放在StatusBar
中:
<StatusBar>
<TextBlock HorizontalAlignment="Right" Text="Not right" />
<StatusBarItem HorizontalAlignment="Center">
<TextBlock Text="Center" />
</StatusBarItem>
</StatusBar>
同样,如果将
Separator
包裹在StatusBarItem
中,则Separator
变为水平。当不使用Separator
包装器直接将StatusBar
放入StatusBarItem
时,的默认设置为垂直。 最佳答案
StatusBar
是ItemsControl
。所有ItemsControl
都有一个容器类。对于ListBox
es,它是ListBoxItem
。对于StatusBar
,它是StatusBarItem
。如果您没有将项目显式包装在StatusBarItem
中,则将为您隐式包装。
如果需要设置ItemsControl
容器的属性,则可以使用ItemContainerStyle
属性:
<StatusBar>
<TextBlock>One</TextBlock>
<TextBlock>Two</TextBlock>
<TextBlock>Three</TextBlock>
<StatusBar.ItemContainerStyle>
<Style TargetType="StatusBarItem">
<Setter Property="HorizontalAlignment" Value="Right"/>
</Style>
</StatusBar.ItemContainerStyle>
</StatusBar>
最后,请注意,
StatusBar
默认情况下使用DockPanel
布置其子级。当您进行复杂的布局时,这可能会令人沮丧。有关如何将其替换为Grid
的信息,请参见我的博客文章here。