2010-07-19 15 views
5

Tengo un panel de distribución con casillas de verificación. Parece que no puedo hacer el mismo espaciado entre las casillas con propiedad de margenWPF: espaciado entre elementos en el panel de distribución

¿Puede alguien decirme qué estoy haciendo mal?

El código de abajo me da esto:

http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png

Como se puede ver, el espaciado entre los elementos no es constante!

<StackPanel MinWidth="150" cal:Bind.Model="{Binding}" Orientation="Horizontal"> 
    <StackPanel.Resources> 
     <Style TargetType="{x:Type CheckBox}"> 
      <Setter Property="Margin" Value="0,0,20,0"/> 
     </Style> 
    </StackPanel.Resources> 
    <CheckBox IsChecked="{Binding IsShown}" Content="{Binding ModuleName, Converter={StaticResource localizeModuleAndFunctionConverter}}" 
       cal:Message.Attach="[Event Click] = [Action FilterShownModuleFunctions]" /> 
</StackPanel> 
+0

¿Puede adjuntar la imagen aquí? – Amsakanna

+0

¿Estás seguro de que las casillas de verificación están dentro del StackPanel? ¿Puedes verificar si hay estilos globales definidos para Checkbox? – Ragunathan

+1

¿Es este StackPanel "independiente" o es el panel de un ItemsControl de algún tipo? Solo muestra un CheckBox en su ejemplo, por lo que es difícil saber cómo coincide la imagen con el código. –

Respuesta

4

Supongo que su problema es su propiedad MinWidth = "150". Creo que tienes un total de 5 paneles de distribución en este momento. Tienes 4 paneles de pila cada uno con su propia casilla de verificación. Entonces supongo que tienes un panel de 5ª pila con tus 4 paneles de pila.

Si esto es cierto ... entonces el problema es que cada una de sus casillas de verificación está en un panel de pila de 150 de ancho (mínimo) pero su tercer panel de pila es mayor que 150 porque el texto es tan largo que debe ser más grande para contener el texto completo (más su margen de 20).

Elimine el MinWidth = "150" y creo que obtendrá un margen de 20 entre el texto de cada casilla de verificación. (si desea el espaciado uniforme entre las casillas reales de las casillas de verificación, debe mantener el ancho de banda minúsculo pero hacerlo lo suficientemente grande como para que sea al menos tan ancho como la casilla de verificación que contiene el texto más largo).

+0

Ah, supongo. No pensé en eso de esa manera: asumí una relación de uno a muchos StackPanel a CheckBoxes, no es que cada CheckBox fuera propia. Supongo que eso plantea la pregunta de "¿por qué?" pero eso no es lo que se pregunta aquí ... :) –

+0

gracias mucho. Estaba cambiando el accesorio MinWidth, pero no me ayudó. Quitarlo ayudó, ya que quiero margen entre texto y no casillas de verificación reales. Antes de hacer otra pregunta, tal vez puedo preguntar aquí ... Me gustaría deshacerme del ancho de configuración para los botones. ¿Cuál es la forma de hacer que los botones cambien de tamaño de forma global dependiendo de su texto en toda la aplicación? Esa es una pregunta ... la segunda es si tengo tres botones uno al lado del otro, ¿cómo puedo configurar el mismo ancho (el ancho del botón más grande). Espero que tenga sentido ... – no9

+0

¡no importa, lo resolví con uniformgrid! – no9

Cuestiones relacionadas