2010-12-16 15 views
9

SaludosWPF - Control Center (etiqueta) dentro de lona

Estoy intentando fijar el posicionamiento de los controles en mi aplicación WPF. En mi aplicación tengo varias etiquetas que están en un lienzo diferente. Estoy tratando de centrar la etiqueta dentro del lienzo. Actualmente el código que tengo para una etiqueta es la siguiente:

<Canvas Height="42" HorizontalAlignment="Left" Margin="0,1,0,0" Name="canvasPlayer1" VerticalAlignment="Top" Width="172" > 
    <Label Content="" Foreground="White" FontSize="15" FontFamily="Eurostile LT ExtendedTwo" Height="Auto" HorizontalAlignment="Center" Margin="0,5,0,0" Name="labelPlayer1Name" VerticalAlignment="Center" Width="Auto" /> 
</Canvas> 

Ahora, para empezar, el problema con esto es que no se centra el texto en absoluto, que se queda en la posición original. Lo que intento lograr es centrar el contenido de la etiqueta en ese lienzo, PERO no puede exceder el ancho del lienzo.

¡Se reciben sugerencias útiles! Si tiene algún comentario sobre mi patrón de pensamiento para resolver este problema, ¡por favor notifíqueme también!

Gracias de antemano

+1

¿Por qué usaste Canvas? ¿tienes que dibujar algo? use Grid insted. –

+0

posible duplicado de [Obtener la posición absoluta del elemento dentro de la ventana en wpf] (http://stackoverflow.com/questions/386731/get-absolute-position-of-element-within-the-window-in-wpf) – Elmo

Respuesta

15

No debe usar Canvas para esto. Las propiedades y los márgenes de alineación no tendrán efecto en los elementos dispuestos en un lienzo. Lo que deberías usar en su lugar es una Cuadrícula. Canvas no es particularmente útil para la mayoría de los escenarios de diseño.

<Grid Height="42" HorizontalAlignment="Left" Margin="0,1,0,0" 
     Name="canvasPlayer1" VerticalAlignment="Top" Width="172" > 
    <Label Content="" Foreground="White" FontSize="15" 
      FontFamily="Eurostile LT ExtendedTwo" 
      HorizontalAlignment="Center" Margin="0,5,0,0" 
      Name="labelPlayer1Name" VerticalAlignment="Center" /> 
</Grid> 
+0

Usé un lienzo para seleccionar el área en la que tenía que centrarme. Supongo que tendré que alinear mi grilla completamente con filas y columnas, ¿no? Gracias por la respuesta por cierto! – Citroenfris

+2

En realidad, no necesita crear las filas y columnas si no lo desea (aunque sí ofrece diseños mucho más limpios). Puede usar los márgenes y las propiedades de alineación dentro de una cuadrícula de 1x1. Esto es lo que hace el diseñador de WPF en Visual Studio y Blend de forma predeterminada. – Josh

+0

Muchas gracias, voy a darle un giro! – Citroenfris