Un TextBlock debe centrarse en una posición x (o y cuando la orientación es vertical). implementé:Cómo centrar un TextBlock en una posición determinada
TextBlock text = new TextBlock();
// Some code to define text, font, etc. here
// Turn if Orientation is vertical
if (Orientation == Orientation.Vertical)
{
text.RenderTransform = new RotateTransform() { Angle = 270 };
}
// Update, then ActualWidth is set correctly
text.UpdateLayout();
// Position of label centered to given position
double halfWidth = text.ActualWidth/2;
double x1 = (Orientation == Orientation.Horizontal) ? x - halfWidth : x;
double y1 = (Orientation == Orientation.Horizontal) ? y : y + halfWidth;
Canvas.SetLeft(text, x1);
Canvas.SetTop(text, y1);
Children.Add(text); // Add to Canvas
Esto funciona bien real, pero ¿es posible hacer esto sin UpdateLayout
. Si elimino UpdateLayout
, no obtengo la posición que estoy buscando, porque ActualWidth es (por supuesto) cero.
que saber que si se utiliza una cuadrícula como de contenedores tendrá que centra inmediatamente ? Además de eso: prueba con LayoutTransform y no RenderTransform – fixagon
¿Cuál es el control de los padres? ¿Cuál es el contexto de este código? – loxxy
@fantasticfix Tengo que usar RenderTransform, porque esto se ejecuta en WPF y Silverlight. SL no conoce LayoutTransform. – Em1