2012-03-14 11 views
5

Me preguntaba cómo se puede establecer el margen de un bloque de texto mediante programación? Tengo una lista de cadenas, que quiero asignar a cada bloque de texto y animar cada una con un espacio entre cada bloque de texto. Justo ahora, todos los bloques de texto están en la misma línea, por lo que no puedo distinguir lo que dice el texto.Programmatically set textblock margin

foreach (var i in item.Items) 
{ 
    TextBlock tb = new TextBlock(); 
    tb.Height = 50; 
    tb.Width = 900; 
    tb.Text = i.Title + "\n"; 

    SlideDown(tb); 
    canvas.Children.Add(tb); 
} 

public void SlideDown(FrameworkElement uc) 
{ 
    ThicknessAnimation tAnimation = new ThicknessAnimation(); 
    tAnimation.Duration = new Duration(TimeSpan.FromSeconds(5.0)); 
    tAnimation.From = new Thickness(0,0,0,0); 
    tAnimation.To = new Thickness(0, 500, 0, 500); 
    Storyboard.SetTarget(tAnimation, uc); 
    Storyboard.SetTargetProperty(tAnimation, new PropertyPath(FrameworkElement.MarginProperty)); 
    Storyboard storyboard = new Storyboard(); 
    storyboard.Children.Add(tAnimation); 
    storyboard.Begin(uc); 
} 

Respuesta

15

Usted puede establecer la propiedad Margin así:

double left = 1, top = 2, right = 3, bottom = 4; 
    textBlock.Margin = new Thickness(left, top, right, bottom); 

o puede especificar un único valor que se aplica a todos por encima de:

double all = 5; 
    textBlock.Margin = new Thickness(all); 
3

Consulte la propiedad de margen here.

tb.Margin = new Thickness(10); 
+0

lo he intentado, pero todo el texto sigue en la misma línea? – Michael

+1

En realidad no, es correcto, pero tengo que aumentar gradualmente el margen después de agregar cada bloque de texto para que el texto tenga márgenes diferentes. Gracias de cualquier manera. :) – Michael

+0

¡Me alegro de que haya ayudado! –