应该如何使用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时,的默认设置为垂直。

最佳答案

StatusBarItemsControl。所有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

07-24 19:35