2012-06-22 15 views
7

Quiero ser capaz de alinear los botones dentro de un panel de pila centralmente. La cantidad de botones es dinámica y se genera cuando se carga el control. Por ejemplo, si se genera 1 botón, este botón debe colocarse en el centro del control. Si se muestran 5 botones, entonces los 5 deben estar alineados horizontalmente luego de 2 entre sí, pero centrales al control.WPF Stack Panel Align central

Un enfoque alternativo sería tener el control cambiar el tamaño dinámicamente en función de su contenido para que sea más ancho con más botones y alinear horizontalmente el control de usuario en la página, pero no estoy seguro de cómo acercarme a cualquiera de las soluciones?

¿Alguien tiene alguna idea?

+3

Las preguntas de diseño funcionan mejor con un ejemplo del Xaml existente :) –

Respuesta

16

Esto debería funcionar. Establezca la Alineación horizontal en el panel de pila, y asegúrese de que cuando esté agregando dinámicamente su botón, les dé a cada uno un valor de propiedad de margen para darles un espacio el uno al otro. horizontal entre sí, central para el control.

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="20"> 
     <Button Margin="10">one</Button> 
     <Button Margin="10">two</Button> 
     <Button Margin="10">three</Button> 
     <Button Margin="10">four</Button> 
     <Button Margin="10">five</Button>    
    </StackPanel> 
7

Es posible ajustar simplemente siguiendo en XAML

StackPanel.HorizontalAlignment = HorizontalAlignment.Center;

o

HorizontalAlignment="Center" (como se ha mencionado GrayFox374)

Este es un ejemplo de MSDN que explica las diversas operaciones de alineación, que tiene exactamente lo que necesitas, creo - How to: Horizontally or Vertically Align Content in a StackPanel