我的C#应用​​程序中有一个包含4个项目的StatusBar。我基本上想将最后两个StatusBarItems float 到右侧。我已经尝试通过将它们都设置为HorizontalAlignment="Right"来进行尝试,但这仅对最后一项有效。

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

我开始使用谷歌搜索功能,并提出以下建议:
http://kentb.blogspot.ch/2007/10/perfect-wpf-statusbar.html

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

最佳答案

您可以利用以下事实: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>

请注意,第3个HorizontalAlignmentStatusBarItem设置为Right,以便其内容将右对齐。

当然,您不必将Item 3和Item 4设置为StatusBarItems,它们也可以是其他控件,例如我上面已经演示的ButtonsProgressBarStatusBarItem只是一个将项目包装在StatusBar中的容器,类似于ComboBoxItemComboBox中包装项目的方式。

如果您不使用StatusBar,它将自动将其内容包装在StatusBarItems中,因此项目1和2就像TextBoxes一样容易。使用StatusBarItems的主要原因是要控制StatusBarItem的工作方式,例如在第3个StatusBarItem中,它手动设置HorizontalAlignment,而不是依赖默认值。

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

10-10 21:37