我的 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>
我开始使用谷歌搜索并得出以下 URL:
这真的是唯一的解决方案,还是有更简单的方法?
最佳答案
您可以利用默认 ItemsPanel
的事实对于 StatusBar
是DockPanel
. 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
, 它们可以是其他控件,例如 Buttons
或 ProgressBar
正如我在上面所展示的那样。 StatusBarItem
只是一个将项目包装在 StatusBar
中的容器,类似于 ComboBoxItem
的方式将项目包装在 ComboBox
中.
StatusBar
会将其内容包装在 StatusBarItems
中自动,如果你不使用它们,那么项目 1 和 2 可以很容易地成为 TextBoxes
.使用 StatusBarItems
的主要原因在你想要控制 StatusBarItem
的情况下作品,就像在第三StatusBarItem
它在哪里设置 HorizontalAlignment
手动,而不是依赖默认值。
关于c# - 如何在 XAML 中将多个 StatusBarItems 对齐到右侧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177079/