我的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
的默认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>
请注意,第3个
HorizontalAlignment
的StatusBarItem
设置为Right
,以便其内容将右对齐。当然,您不必将Item 3和Item 4设置为
StatusBarItems
,它们也可以是其他控件,例如我上面已经演示的Buttons
或ProgressBar
。 StatusBarItem
只是一个将项目包装在StatusBar
中的容器,类似于ComboBoxItem
在ComboBox
中包装项目的方式。如果您不使用
StatusBar
,它将自动将其内容包装在StatusBarItems
中,因此项目1和2就像TextBoxes
一样容易。使用StatusBarItems
的主要原因是要控制StatusBarItem
的工作方式,例如在第3个StatusBarItem
中,它手动设置HorizontalAlignment
,而不是依赖默认值。关于c# - 如何在XAML中将多个StatusBarItem对齐到右侧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15177079/