Pas*_*ber 14 c# xaml alignment
我的C#应用程序中有一个包含4个项目的StatusBar.我基本上想要将最后两个StatusBarItems浮动到右边.我已经通过设置它们来尝试它HorizontalAlignment="Right",但这只适用于最后一项.
<StatusBar Name="statusBar1" Height="23" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
<StatusBarItem />
<StatusBarItem />
<StatusBarItem HorizontalAlignment="Right" />
<StatusBarItem HorizontalAlignment="Right" />
</StatusBar>
Run Code Online (Sandbox Code Playgroud)
我开始谷歌搜索,我想出了以下内容:http: //kentb.blogspot.ch/2007/10/perfect-wpf-statusbar.html
这真的是唯一的解决方案吗?或者有更简单的方法吗?
Bri*_*n S 27
你可以采取的事实,即默认的优势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>
Run Code Online (Sandbox Code Playgroud)
请注意,HorizontalAlignment第3个StatusBarItem的设置是Right为了使其内容对齐.
当然,你不必拥有第3项和第4项StatusBarItems,它们可以是其他控件,例如Buttons或者ProgressBar我已经在上面演示过.该StatusBarItem仅仅是包装在物品的容器StatusBar,类似于如何ComboBoxItem包装项目内ComboBox.
在StatusBar将包裹它的内容在StatusBarItems自动,如果你不使用它们,所以项目1和2可以很容易地被TextBoxes.使用的主要原因StatusBarItems是,您希望控制StatusBarItem工作方式,例如在第3个手动StatusBarItem设置的位置HorizontalAlignment,而不是依赖于默认值.
Mit*_*tch 19
如上所述,默认容器是DockPanel.因此,您可以根据需要设置任意数量的项目DockPanel.Dock="Right".请确保该fill项目是最后一个.
<StatusBar>
<StatusBarItem DockPanel.Dock="Right">
<Slider Width="100" />
</StatusBarItem>
<StatusBarItem DockPanel.Dock="Right">
<Label>Zoom: 100 %</Label>
</StatusBarItem>
<StatusBarItem>
<TextBlock>Ready</TextBlock>
</StatusBarItem>
</StatusBar>
Run Code Online (Sandbox Code Playgroud)