2017-08-16 3 views
0

Lorsque j'ajoute StackPanel à StatusBar en tant que dernier StatusBarItem, il ne remplit pas tout l'espace supplémentaire. Je me demande pourquoi est-ce que StatusBar utilise en interne DockPanel en tant que ItemsPanel.StackPanel dans StatusBar ne s'étire pas

Voici un exemple de code:

<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> 

Si je change l'ordre des éléments si l'étiquette est d'abord et StackPanel est deuxième, il remplit l'espace supplémentaire comme il se doit.

Répondre

1

C'est le rouge StatusBarItem qui ne remplit pas l'espace puisque vous avez défini sa propriété HorizontalAlignment sur Right. Changez-le à la valeur par défaut de Stretch si vous voulez qu'il remplisse le DockPanel. Le StackPanel remplit le StatusBarItem comme prévu.

+0

Donc, si ce n'est pas "Stretch", il ne remplira pas tout l'espace disponible, même s'il s'agit du dernier enfant du DockPanel? J'ai toujours pensé que le dernier enfant remplirait tout l'espace restant, quoi qu'il arrive. – user2764266

+0

Évidemment non. Supprimer HorizontalAlignment = "Droite" et vous verrez. – mm8

+0

Oui, j'ai essayé et cela fonctionne, juste surpris que cela fonctionne de cette façon. Merci. – user2764266