Je tente d'écrire un projet d'apprentissage WPF simple qui crée un ensemble de boutons dans une fenêtre principale redimensionnable. Il doit y avoir un Button
par entrée dans une collection, et le contenu de cette collection peut varier pendant l'exécution. Je veux que les boutons remplissent toute la fenêtre (par exemple, 1 bouton @ 100% de largeur, 2 boutons @ 50% de largeur, 3 boutons @ 33% de largeur, etc. tous à 100% de hauteur). Une version simplifiée de ce que j'ai écrit à ce jour est:Contrôles d'étirement pour remplir ItemsControl
<ItemsControl x:Name="itemscontrolButtons" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding}">
<TextBlock Text="{Binding}" />
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
...
List<string> listButtonTexts = new List<string>() { "Button1", "Button2" };
...
itemscontrolButtons.DataContext = listButtonTexts;
Il en résulte ceci:
Je suis incapable de faire les boutons Étirer pour adapter la largeur et mes tentatives pour utiliser un Grid
au lieu de StackPanel
étaient infructueuses. Puis, en tant qu'amélioration optionnelle, j'apprécierais des suggestions sur la façon de l'ajuster de sorte que s'il y a tellement de boutons qu'ils ne peuvent pas s'adapter correctement sur une ligne ou soient plus étroits qu'un seuil, ils s'enrouleront sur une nouvelle ligne (réduisant ainsi la hauteur des boutons si vous passez de 1 à 2 rangs).
Je voudrais souligner que je voudrais savoir comment faire le WPF way. Je me rends compte que je peux consommer des messages de redimensionnement de fenêtre et redimensionner les contrôles explicitement, et c'est ainsi que je l'aurais fait avec MFC ou WinForms, mais d'après ce que j'ai lu ce n'est pas comme ça.
C'était exactement ce dont j'avais besoin pour mon objectif principal, merci. – Gregyski
Grâce à la réponse de Nir, j'ai pu répondre au critère optionnel. Les détails sont dans la réponse que j'ai posté à cette question. Il a été recommandé sur Meta que je gère cette situation de cette façon. http://meta.stackexchange.com/questions/14306/my-improved-answer-based-on-anothers-accepted-answer-for-my-own-question – Gregyski
Merci! C'est juste ce qui me manquait pour espacer les éléments et leur panneau uniformément dans une liste. –