WPF 中的 StatusBarItem 类有啥意义?

Posted

技术标签:

【中文标题】WPF 中的 StatusBarItem 类有啥意义?【英文标题】:What is the point of the StatusBarItem class in WPF?WPF 中的 StatusBarItem 类有什么意义? 【发布时间】:2011-01-07 08:49:27 【问题描述】:

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

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

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

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

【问题讨论】:

我在使用 SeparatorToolBar ***.com/questions/1274370 时遇到了类似的问题 不是答案,而是一个 ItemsControl,这意味着您可以将其绑定到对象集合并使用 DataTemplates 来确定这些项目在状态栏中的显示方式。可能它在 StatusBar 中提供了比标准 ItemsControl 更好的行为。 【参考方案1】:

StatusBarItemsControl。所有ItemsControls 都有一个容器类。对于ListBoxes,它是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 来布置其子级。当您进行复杂的布局时,这可能会令人沮丧。请参阅我的博文here,了解如何将其换成Grid

【讨论】:

感谢分享博文!以下为我工作&lt;StatusBar.ItemsPanel&gt; &lt;ItemsPanelTemplate&gt; &lt;StackPanel Orientation="Horizontal"/&gt; &lt;/ItemsPanelTemplate&gt; &lt;/StatusBar.ItemsPanel&gt;

以上是关于WPF 中的 StatusBarItem 类有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章

weka 中的 ClusterMembership 类有啥作用?

Typescript中的接口和抽象类有啥区别?

.NET 中的结构和类有啥区别?

Scala中的final类和sealed类有啥区别?

Java中的单例模式和静态类有啥区别? [复制]

asp.net core中的Host和WebHost类有啥区别