Estoy intentando escribir un proyecto de aprendizaje de WPF simple que crea un conjunto de botones dentro de una ventana principal redimensionable. Debe haber un Button
por entrada en una colección, y el contenido de esa colección puede variar durante el tiempo de ejecución. Quiero que los botones llenen toda la ventana (por ejemplo, 1 botón @ 100% de ancho, 2 botones @ 50% de ancho, 3 botones a 33% de ancho, etc., todo al 100% de altura). Una versión simplificada de lo que he escrito hasta ahora es:Controles de estiramiento para llenar 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;
Esto se traduce en lo siguiente:
he sido incapaz de hacer que los botones se extienden a la anchura y mis intentos utilizar un Grid
en lugar de StackPanel
fue infructuoso.
Luego, como una mejora opcional, agradecería sugerencias sobre cómo ajustarlo de manera que si hay tantos botones que no pueden caber correctamente en una línea o son más estrechos que un umbral, se ajustará a una nueva línea (reduciendo a la mitad las alturas de los botones si va de 1 a 2 filas).
Me gustaría resaltar que me gustaría saber cómo hacer esto WPF way. Me doy cuenta de que puedo consumir mensajes de cambio de tamaño de ventana y cambiar el tamaño de los controles de forma explícita, y así es como lo hubiera hecho con MFC o WinForms, pero por lo que he leído, no es así como deberían hacerse con WPF.
Eso era justo lo que necesitaba para mi objetivo principal, gracias. – Gregyski
Gracias a la respuesta de Nir, pude cumplir el criterio opcional. Los detalles están en la respuesta que he enviado a esta pregunta. Se recomendó en Meta que maneje esta situación de esta manera. http://meta.stackexchange.com/questions/14306/my-improved-answer-based-on-anothers-accepted-answer-for-my-ow-question – Gregyski
¡Gracias! Esto es exactamente lo que me faltaba para espaciar los elementos y su panel de manera uniforme en un cuadro de lista. –