Sto tentando di scrivere un semplice progetto di apprendimento WPF che crea un insieme di pulsanti all'interno di una finestra principale ridimensionabile. Ci deve essere uno Button
per voce in una raccolta e il contenuto di tale raccolta può variare durante l'esecuzione. Voglio che i pulsanti riempiano l'intera finestra (ad esempio 1 pulsante @ larghezza 100%, 2 pulsanti @ larghezza 50%, 3 pulsanti @ larghezza 33%, ecc. Tutti all'altezza 100%). Una versione semplificata di quello che ho scritto finora è:Estendere i controlli per riempire 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;
Questo si traduce in questo:
sono stato in grado di rendere i pulsanti si estendono in base alla larghezza ed i miei tentativi utilizzare un Grid
invece di StackPanel
era inutile.
Quindi, come miglioramento opzionale, gradirei suggerimenti su come regolarlo in modo tale che se ci sono così tanti pulsanti che non possono adattarsi correttamente su una linea o sono più stretti di una soglia, si avvolgerà su una nuova linea (quindi dimezzare le altezze dei pulsanti se si passa da 1 a 2 righe).
Mi piacerebbe sottolineare che mi piacerebbe sapere come fare questo il modo WPF. Mi rendo conto che posso consumare i messaggi di ridimensionamento delle finestre e ridimensionare i controlli in modo esplicito, ed è così che l'avrei fatto con MFC o WinForms, ma da quello che ho letto non è il modo in cui tali cose dovrebbero essere fatte con WPF.
Era proprio quello di cui avevo bisogno per il mio obiettivo principale, grazie. – Gregyski
Grazie alla risposta di Nir, sono riuscito a soddisfare il criterio facoltativo. I dettagli sono nella risposta che ho inviato a questa domanda. Mi è stato consigliato su Meta di gestire questa situazione in questo modo. http://meta.stackexchange.com/questions/14306/my-improved-answer-based-on-anothers-accepted-answer-for-my-own-question – Gregyski
Grazie! Questo è proprio quello che mi mancava per spaziatura degli oggetti e il loro pannello in modo uniforme in una lista. –