15

StatusBarItem该类应该如何使用?a 的内容中的每个元素都StatusBar应该用它包装吗?

我真的不明白如何StatusBarItem影响StatusBar布局。似乎我可以HorizontalAlignment在 a 上使用StatusBarItem,但当我将元素StatusBar直接放入时不能:

<StatusBar>
    <TextBlock HorizontalAlignment="Right" Text="Not right" />
    <StatusBarItem HorizontalAlignment="Center">
        <TextBlock Text="Center" />
    </StatusBarItem>
</StatusBar>

此外,如果您将 a 包装Separator在 aStatusBarItem中,Separator则更改为水平。s 在没有包装器的情况下直接Separator放入时默认为垂直。StatusBarStatusBarItem

4

1 回答 1

18

AStatusBar是一个ItemsControl。所有ItemsControls 都有一个容器类。对于ListBoxes,它是ListBoxItem. 对于StatusBar,是StatusBarItem。如果您没有明确地将您的项目包装在 aStatusBarItem中,它将为您隐式包装在一个中。

如果您需要设置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使用 aDockPanel来布置其子级。当您进行复杂的布局时,这可能会令人沮丧。请参阅我的博客文章了解如何将其换成Grid.

于 2010-01-20T16:56:58.887 回答