J'ai besoin d'une bonne solution pour faire un TextBox dans une grille pour étendre à son espace disponible, mais ne pas se développer en fonction de la longueur du texte qu'il contient.WPF: Développez TextBox par largeur disponible mais PAS par son contenu?
La plupart des solutions que j'ai trouvé est de faire une fausse-frontière et de lier à son ActualWidth mais c'est une solution hacky pour moi. La solution frontière a besoin d'une petite marge sur la frontière, ce qui n'est pas du tout sympa. Si vous le réglez sur Low, l'interface utilisateur se comportera de manière très étrange. Je n'aime pas cette solution. Il doit y avoir un meilleur? Tout ce que je veux, c'est que la zone de texte ne se développe pas avec son contenu. Cela ne devrait pas être si difficile. S'il vous plait, faites moi savoir comment faire ça.
EDIT:
Une chose étrange, j'ai remarqué est que le code suivant rend la frontière beaucoup plus grande, alors il doit être:
<Grid>
<Border Name="dummy1" Background="Red" />
<TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" />
</Grid>
Remplacement de l'ordre à la frontière et zone de texte fait la frontière s'adapter à la boîte de texte bien, mais ce dont j'ai besoin est le contraire. Comme dit précédemment, mettre une marge (sur la frontière) à au moins 0,5 le fait fonctionner mais avec une interface utilisateur légèrement twitchy en conséquence.
Si vous avez juste un TextBox dans une grille, il doit s'étendre par défaut à son parent. Êtes-vous sûr de n'avoir rien qui modifie votre propriété HorizontalAlignment? Parlez-vous du contrôle Grid ou d'un autre contrôle (comme DataGrid ou GridView) que vous appelez Grid? –