WPF Éléments de Barre d'outils HorizontalAligment=“Droite”
Est-il possible de rendre les éléments à l'intérieur d'un WPF barre d'outils sont un HorizontalAlignment de Droit?
<ToolBar Height="38" VerticalAlignment="Top" Grid.Row="1">
<Button HorizontalAlignment="Left" Width="50" VerticalAlignment="Stretch"/>
<Button HorizontalAlignment="Left" Width="50" VerticalAlignment="Stretch"/>
<ComboBox Width="120" HorizontalAlignment="Right"/>
</ToolBar>
J'ai essayé d'ajouter les éléments à l'intérieur d'une Grille et de l'affectation de la ColumnDefinition
s vers la Gauche/Droite. J'ai aussi essayé une StackPanel
. Peu importe ce que j'essaie, je n'arrive pas à obtenir la zone de liste déroulante à être "ancrée" sur le côté droit de la Barre d'outils.
Mise à JOUR:
<DockPanel LastChildFill="True">
Ne fonctionne pas, Il ne sera pas remplir la Barre d'outils de l'élément comme un élément normal.
OriginalL'auteur jsmith | 2010-02-04
Vous devez vous connecter pour publier un commentaire.
Enquête plus approfondie a montré que, pour ce faire j'ai besoin de définir la largeur d'un
Grid
dans leToolBar
, ou comme Chris Nicol dit, unDockPanel
dans leToolBar
dynamiquement à celle de la largeur de laToolbar
à l'aide deRelativeSource
.Toutefois, cela ne se sent pas comme une solution propre. C'est assez compliqué à obtenir le
Toolbar
pour mettre à jour correctement sur le redimensionnement. Donc à la place j'ai trouvé un peu un hack qui ressemble et fonctionne plus propre.Depuis tous mes éléments sont sur une Grille, puis-je placer ma
ComboBox
sur le dessus de laToolBar
en attribuant c'estGrid.Row
sur la même rangée que la barre d'outils. Après le réglage de monMargins
à tirer laComboBox
plus légèrement de ne pas interférer avec l'air, elle fonctionne selon les besoins, avec pas de bugs. Puisque la seule autre façon que j'ai trouvée pour ce faire est de fixer un DockPanel/Grille de la propriété Width de manière dynamique, en fait, je sens que c'est le nettoyeur de la façon la plus efficace de le faire.C'est vraiment une idée géniale. Merci!
Assez, assez, assez bon.
Simple et brillante solution à long terme de la douleur dans la croupe 🙂
Ce sera la cause de votre aligné à droite de l'élément (dans votre cas ComboBox) flotter au-dessus de la barre d'outils des éléments si elle est redimensionnée (en raison de redimensionnement de la fenêtre) au point où la plus à droite de la barre d'outils de l'élément est tout à fait à droite.
OriginalL'auteur jsmith
Pour quiconque cherche une solution, la suite fonctionné pour moi:
Je suis en utilisant .NET de 4,6 et VS2015, mais je crois que ce serait le travail dans les versions précédentes.
OriginalL'auteur dotNET
Avez-vous essayé d'utiliser un DockPanel qui remplit la barre d'outils, vous pouvez ancrer la zone de liste déroulante à la droite.
Rappeler qu'avec un dockpanel la séquence de vous mettre les éléments dans est très important.
HTH
juste super occupé avec le travail en ce moment, je vais poster une solution de ce week-end qui devraient se sentir un peu plus propre.
OriginalL'auteur Chris Nicol
OriginalL'auteur Mark Cidade
Ma solution à ce problème est de créer un label de contrôle avec un "printemps" comme la capacité, de sorte qu'il serait de remplir le vide entre les boutons de la barre d'outils, donc de droite "l'alignement" de la barre d'outils de la zone de liste déroulante (ou tout autre contrôle qui doit "aligné à droite).
Pour ce faire, j'ai créé un WidthConverter, qui prendrait la Largeur Réelle de la Barre d'outils de Contrôle, puis soustraire le l'espace nécessaire pour aligner à droite de la zone de liste déroulante.:
Ensuite, j'ai ajouté une étiquette de contrôle de la barre d'outils, placé à la gauche de la zone de liste déroulante vous avez besoin aligné à droite. Lier l'étiquette de la Largeur de la barre d'outils du ActualWidth et d'appliquer les WidthConverter:
Vous aurez besoin d'ajuster la ConverterParameter à vos besoins spécifiques, jusqu'à ce que vous obtenir le désiré "aligner à droite". Un nombre plus élevé fournit plus d'espace pour la zone de liste déroulante, alors qu'un nombre inférieur de l'offre moins d'espace.
À l'aide de cette solution, l'étiquette redimensionne automatiquement à chaque fois que votre barre d'outils redimensionne à la faire ressembler que vous avez aligné à droite de votre zone de liste déroulante.
Il y a deux grands avantages de cette solution par rapport à l'ajout d'une grille dans la barre d'outils. La première est que si vous avez besoin d'utiliser des boutons sur la barre d'outils, vous ne perdrez pas le bouton de barre d'outils de style. La deuxième est que le débordement va fonctionner comme prévu si la barre d'outils de la longueur est réduite par le biais de redimensionnement de la fenêtre. Boutons individuels va aller dans le débordement de tel que requis. Si les boutons sont placés dans une grille, puis la grille est mis dans le débordement de la prise de tous les boutons.
XAML dans l'utilisation:
Si vous avez le désir de toujours garder le dernier bouton de la barre d'outils, par exemple un bouton d'aide qui vous voulez toujours visible, ajoutez l'attribut de la Barre d'outils.OverflowMode="Jamais" à son élément.
Mise à jour de la réponse à inclure un exemple. Le premier bouton à gauche, et le deuxième bouton sera aligné à droite. Vous devrez régler le Convertisseur de paramètres pour obtenir le résultat souhaité.
OriginalL'auteur PocketDews
C'est la façon dont je l'ai fait:
J'ai créé un style de la barre d'outils
L'important, c'est :
Et
Avec cela, vos boutons sera aligné à droite
OriginalL'auteur Daniel
Je ne suis pas très satisfait de la "WidthConverter" solution parce que j'ai eu des éléments dynamiques à la fin. Poursuite de la recherche m'a conduit à ici, qui semble être parfait pour moi. Voici mon exemple de code dans le cas où vous êtes intéressé:
Cela ne fonctionne pas parce que tous les boutons de barre d'outils disparaissent si vous réduisez la fenêtre. Sinon, il fonctionne parfaitement. Donc, ce serait génial si il y a un petit tweak pour cette approche pour le faire fonctionner.
Bon, j'ai trouvé un autre post dans le social.msdn.microsoft.com/Forums/en-US/wpf/thread/... (à partir de dhbusch2) qui fonctionne vraiment parfait pour moi, sauf que j'ai pour appliquer un style de bouton comme Style="{StaticResource {x:Statique de la Barre d'outils.ButtonStyleKey}}"
OriginalL'auteur newman
Je me rends compte que c'est un vieux sujet, mais encore, elle apparaît quand vous posez la question. C'est de cette façon-je traiter cette question:
Effectivement: j'ai créer deux barre d'outils des objets et de les avoir sur la même Grille.ligne. Le premier a défaut alignement (gauche), le second est aligné à droite. Il semble faire l'affaire pour moi.
OriginalL'auteur Leo Prast