2010-01-20 19 views
12

Come si suppone che venga utilizzata la classe StatusBarItem? Ogni elemento nel contenuto di StatusBar dovrebbe essere avvolto con esso?Qual è il punto della classe StatusBarItem in WPF?

Non ho davvero capito come StatusBarItem influisce sul layout StatusBar. Sembra che posso usare HorizontalAlignment su un StatusBarItem, ma non quando ho messo l'elemento nel StatusBar direttamente:

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

anche se si avvolge un Separator in StatusBarItem le Separator modifiche orizzontale. Separator s predefinito su verticale se inserito nello StatusBar direttamente senza wrapper StatusBarItem.

+0

ho avuto un problema simile utilizzando 'Separator' con' ToolBar' http://stackoverflow.com/questions/1274370/ – kenwarner

+1

Non è una risposta, ma è un ItemsControl, il che significa che è possibile associarlo a una raccolta di oggetti e utilizzare DataTemplates per determinare in che modo tali elementi vengono visualizzati nella barra di stato. Probabilmente offre un comportamento migliore in uno StatusBar rispetto a un oggetto ItemsControl standard. – Will

risposta

14

A StatusBar è un ItemsControl. Tutti gli ItemsControl hanno una classe contenitore. Per ListBox es, è ListBoxItem. Per StatusBar, è StatusBarItem. Se non si avvolge esplicitamente il proprio articolo in uno StatusBarItem, questo verrà implicitamente racchiuso in uno per l'utente.

Se è necessario impostare le proprietà di contenitori s' un ItemsControl, è possibile utilizzare la proprietà 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> 

Infine, ricordiamo che il StatusBar utilizza un DockPanel di default per disporre i suoi figli. Questo può essere frustrante quando stai facendo intricati layout. Vedere il mio post sul blog here su come sostituirlo per un Grid.

+0

Grazie per aver condiviso il post sul blog! Quanto segue ha funzionato per me ' ' – SliverNinja