2010-01-20 6 views
12

Comment la classe StatusBarItem est-elle censée être utilisée? Est-ce que tous les éléments d'un contenu de StatusBar sont censés en être enveloppés? Je ne comprends pas vraiment comment StatusBarItem affecte la mise en page StatusBar. Il semble que je peux utiliser HorizontalAlignment sur un StatusBarItem, mais pas quand je mets l'élément dans le directement StatusBar:Quel est le point de la classe StatusBarItem dans WPF?

<StatusBar> 
    <TextBlock HorizontalAlignment="Right" Text="Not right" /> 
    <StatusBarItem HorizontalAlignment="Center"> 
     <TextBlock Text="Center" /> 
    </StatusBarItem> 
</StatusBar> 

Aussi, si vous enveloppez un Separator dans un StatusBarItem les Separator changements à l'horizontale. Separator s par défaut à la verticale lorsqu'il est mis dans le StatusBar directement sans un wrapper StatusBarItem.

+0

J'ai eu un problème similaire en utilisant 'Separator' avec' ToolBar' http://stackoverflow.com/questions/1274370/ – kenwarner

+1

Pas une réponse, mais c'est un ItemsControl, ce qui signifie que vous pouvez le lier à une collection d'objets et utilisez DataTemplates pour déterminer comment ces éléments sont affichés dans la barre d'état. Il offre probablement un meilleur comportement dans un StatusBar qu'un ItemsControl standard. – Will

Répondre

14

Un StatusBar est un ItemsControl. Tous les ItemsControl ont une classe de conteneur. Pour ListBox es, c'est ListBoxItem. Pour StatusBar, c'est StatusBarItem. Si vous n'enveloppez pas explicitement votre article dans un StatusBarItem, il sera implicitement enveloppé dans un pour vous.

Si vous devez définir les propriétés d'un des conteneurs de ItemsControl, vous pouvez utiliser la propriété ItemContainerStyle:

<StatusBar> 
    <TextBlock>One</TextBlock> 
    <TextBlock>Two</TextBlock> 
    <TextBlock>Three</TextBlock> 
    <StatusBar.ItemContainerStyle> 
     <Style TargetType="StatusBarItem"> 
      <Setter Property="HorizontalAlignment" Value="Right"/> 
     </Style> 
    </StatusBar.ItemContainerStyle> 
</StatusBar> 

Enfin, notez que le StatusBar utilise un DockPanel par défaut pour mettre ses enfants. Cela peut être frustrant lorsque vous effectuez des mises en page complexes. Voir mon article de blog here sur la façon de l'échanger pour un Grid.

+0

Merci de partager le blog! Ce qui suit a fonctionné pour moi ' ' – SliverNinja

Questions connexes