Dans une fenêtre, il y a une liste de DockPanel
s pour spécifier quelques fichiers. Chaque DockPanel a un TextBox (pour le chemin) et un bouton (pour rechercher un fichier).WPF Dockpanel le premier enfant utilise l'espace restant
J'ai recréé une simple page WPF à demostrate le problème ici:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="150"
Height="22">
<DockPanel>
<TextBox HorizontalAlignment="Stretch"/> <!-- path to file -->
<Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
</DockPanel>
</Page>
Le problème est que je veux que le bouton à droite de la zone de texte, mais qui provoque la zone de texte pour être vraiment petit depuis le LastChild du DockPanel est le bouton qu'il utilise jusqu'à l'espace restant. Ive a essayé de changer cela en les mélangeant et en réglant LastChildFill="False"
mais cela ne fait que redonner une petite taille au bouton, ne rendant pas le TextBox large (même avec HorizontalAlignment="Stretch"
).
La raison pour laquelle je veux les contrôles dans cet ordre est que je veux que l'utilisateur atteigne le TextBox avant le bouton lors de l'utilisation tab
pour naviguer dans la fenêtre. J'ai regardé dans le réglage TabIndex
mais il semble hacky, les fonctionnalités préférées de WPF est que tabindex sont dans l'ordre dans lequel les contrôles sont définis dans le XAML. Sans oublier que je devrais probablement mettre manuellement TabIndex sur tout dans la fenêtre.
Pour moi, il semble que le réglage de TextBox.HorizontalAlignment n'est pas respecté. Comment puis-je faire en sorte que le premier contrôle utilise autant d'espace que possible tout en conservant l'ordre des onglets?
+1 parce qu'il n'a pas question TabOrder. Si quelqu'un veut éviter de taper ColumnDefinitions dans de tels scénarios simples, jetez un oeil à cette solution: http://rachel53461.wordpress.com/2011/09/17/wpf-grids-rowcolumn-count-properties/ – surfen