c# - 如何在 XAML 中将多个 StatusBarItems 对齐到右侧?

标签 c# xaml alignment

我的 C# 应用程序中有一个包含 4 个项目的 StatusBar。我基本上想将最后两个 StatusBarItems float 到右边。我试过用 Horizo​​ntalAlignment="Right" 设置它们,但这只对最后一项有效。

<StatusBar Name="statusBar1" Height="23" HorizontalAlignment="Stretch"
        VerticalAlignment="Bottom">
    <StatusBarItem />
    <StatusBarItem />
    <StatusBarItem HorizontalAlignment="Right" />
    <StatusBarItem HorizontalAlignment="Right" />
</StatusBar>

我开始使用谷歌搜索并得出以下 URL:

Blogspot

这真的是唯一的解决方案,还是有更简单的方法?

最佳答案

您可以利用默认 ItemsPanel 的事实对于 StatusBarDockPanel . DockPanel默认情况下,将尝试用最后一项填充剩余空间。所以最后StatusBarItem你添加到 StatusBar将填充剩余的空间。要利用这一点,您可以简单地嵌套 StatusBarItems像这样:

<StatusBar Name="statusBar1" Height="23" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
  <StatusBarItem Content="Item 1"/>
  <StatusBarItem Content="Item 2" />
  <StatusBarItem HorizontalAlignment="Right">
    <StackPanel Orientation="Horizontal">
      <StatusBarItem  Content="Item 3"/>
      <StatusBarItem Content="Item 4"/>
      <ProgressBar Height="15" Width="50" IsIndeterminate="True" Margin="5,0"/>
    </StackPanel>
  </StatusBarItem>
</StatusBar>

请注意 HorizontalAlignment第三的StatusBarItem设置为 Right这样它的内容就会右对齐。

当然,您不必让项目 3 和项目 4 为 StatusBarItems , 它们可以是其他控件,例如 ButtonsProgressBar正如我在上面所展示的那样。 StatusBarItem只是一个将项目包装在 StatusBar 中的容器,类似于 ComboBoxItem 的方式将项目包装在 ComboBox 中.

StatusBar会将其内容包装在 StatusBarItems 中自动,如果你不使用它们,那么项目 1 和 2 可以很容易地成为 TextBoxes .使用 StatusBarItems 的主要原因在你想要控制 StatusBarItem 的情况下作品,就像在第三StatusBarItem它在哪里设置 HorizontalAlignment手动,而不是依赖默认值。

关于c# - 如何在 XAML 中将多个 StatusBarItems 对齐到右侧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177079/

相关文章:

c# - WPF MVVM 为什么使用 ContentControl + DataTemplate View 而不是直接的 XAML 窗口 View ?

forms - 与标签的右侧文本对齐(行内 block )

html - 带有长单词的 CSS 居中文本

c# - 从视频中提取帧的最快方法

c# - 更改资源字典中的 SolidColorBrush#Color 失败 : Property is readonly

C# WPF 非常简单的文本框验证

html - 如何在主 div 中组织 2 个 div 以使其始终静止?

c# - 登录用户申请

c# - ms botframework 中英雄卡按钮的自定义 css 样式

c# - 如何设置PDF边距?