2017-08-16 50 views
0

当我将StackPanel作为最后一个StatusBarItem添加到StatusBar时,它不会填满所有额外的空间。我想知道为什么,因为StatusBar内部使用DockPanel作为ItemsPanel。StatusBar中的StackPanel不会伸展

这里的一个示例代码:

<Window x:Class="Foo.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:Zadatak1" 
    Title="MainWindow" 
    WindowState="Maximized"> 
<DockPanel> 
<StatusBar DockPanel.Dock="Bottom"> 
     <StatusBarItem DockPanel.Dock="Left" Background="SkyBlue"> 
      <Label>Status....</Label> 
     </StatusBarItem> 
     <StatusBarItem Background="Red" DockPanel.Dock="Right" HorizontalAlignment="Right"> 
      <StackPanel Orientation="Horizontal"> 
       <Label>Time:</Label> 
       <Label>02:48:AM</Label> 
      </StackPanel> 
     </StatusBarItem> 
    </StatusBar> 
</DockPanel> 

如果我改变元素的顺序,以便标签是第一和StackPanel中是第二,它填充额外的空间,它应。

回答

1

由于您将其HorizontalAlignment属性设置为Right,因此它不会填充空间的红色StatusBarItem。如果您希望填充DockPanel,请将其更改为默认值Stretch

StackPanel的确填写了StatusBarItem和预期的一样。

+0

因此,如果它不是“拉伸”,即使它是DockPanel的最后一个孩子,它也不会填满所有可用空间?我一直认为无论发生什么,最后一个孩子都会填满所有剩余的空间。 – user2764266

+0

显然不是。删除Horizo​​ntalAlignment =“正确”,你会看到。 – mm8

+0

是的,我尝试过,它的工作,只是感到惊讶,它的作品。谢谢。 – user2764266