Comment aligner plusieurs StatusBarItems sur le côté droit dans le code XAML?
J'ai une Barre avec 4 éléments sur mon application en C#. En gros, je veux flotter les deux dernières StatusBarItems vers la droite. Je l'ai essayé en les réglant à la fois avec HorizontalAlignment="Right"
, mais qui n'a fait que du travail pour le dernier point.
<StatusBar Name="statusBar1" Height="23" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
<StatusBarItem />
<StatusBarItem />
<StatusBarItem HorizontalAlignment="Right" />
<StatusBarItem HorizontalAlignment="Right" />
</StatusBar>
J'ai commencé une recherche sur google et j'ai trouvé le texte suivant:
http://kentb.blogspot.ch/2007/10/perfect-wpf-statusbar.html
Est-ce vraiment la seule solution pour cela? Ou est-il un moyen plus facile?
OriginalL'auteur Pascal Weber | 2013-03-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez prendre avantage du fait que la valeur par défaut
ItemsPanel
pour laStatusBar
est leDockPanel
. LeDockPanel
, par défaut, essayez de remplir l'espace restant avec le dernier élément. Ainsi, la dernièreStatusBarItem
vous ajoutez à laStatusBar
remplir le reste de l'espace. Pour bénéficier de cette fonction, vous pouvez simplement nidStatusBarItems
comme ceci:Noter que le
HorizontalAlignment
de la 3èmeStatusBarItem
est fixé àRight
de sorte que son contenu sera aligné à droite.Bien sûr, vous n'avez pas à avoir le Point 3 et le Point 4 de l'être
StatusBarItems
, ils pourraient avoir d'autres contrôles, tels queButtons
ouProgressBar
comme je l'ai démontré ci-dessus. LeStatusBarItem
est simplement un conteneur qui enveloppe les éléments dans unStatusBar
, semblable à la façon dont unComboBoxItem
enveloppements d'éléments à l'intérieur d'unComboBox
.La
StatusBar
va l'envelopper contenu dans lesStatusBarItems
automatiquement, si vous ne les utilisez pas, pour que les articles 1 et 2 pourrait tout aussi facilement êtreTextBoxes
. La principale raison d'utiliserStatusBarItems
est dans le cas où vous souhaitez contrôler la façon dont leStatusBarItem
œuvres, comme dans le 3èmeStatusBarItem
où il définit laHorizontalAlignment
manuellement, plutôt que de compter sur le défaut.Ah, désolé, je suis sur un mac à l'heure actuelle, ne peut donc pas tester. Est-il un
HorizontalContentAlignment
sur leStatusBar
que vous pouvez définir pourStretch
? Je vais revenir à mon PC rapidement et de le tester.np. et oui, il est, cependant, qui n'a pas l'astuce.
Ok, maintenant que j'ai eu un moment de le tester sur mon PC, j'ai mis à jour la réponse à accomplir ce que je crois que vous êtes la recherche pour. Espérons que cela résout votre problème.
Bonne astuce mais ça ne marche pas quand il y a des séparateurs entre chaque éléments 🙁
OriginalL'auteur Brian S
Comme mentionné précédemment, le conteneur par défaut est
DockPanel
. En tant que tel, vous pouvez définir autant d'éléments que nécessaire pourDockPanel.Dock="Right"
. Juste être sûr que lefill
point est dernier.meilleure réponse, puis l'a accepté un
OriginalL'auteur Mitch
Vous pouvez également définir
LastChildFill
àfalse
et ensuite utiliserDockPanel.Dock=Right
tout comme la solution ci-dessus, sans avoir à se soucier du dernier élément de consommer tout l'espace:OriginalL'auteur uTILLIty
Une autre façon intéressante d'y parvenir est de remplacer la valeur par défaut du panneau de
StatusBar
avecGrid
, qui vous donnera plus de contrôle sur la disposition des éléments.OriginalL'auteur dotNET