2009-11-25 14 views
16

En el objeto TextBlock puede dar formato al texto en el XAML como esto:WPF - TextBlock - formato de texto mediante programación

<TextBlock> 
    <Bold>bold text</Bold> random non bold next 
</TextBlock> 

¿Cómo está usted las etiquetas "Negrita" mediante programación?

Intenté simplemente ponerlos en la propiedad del texto y simplemente los imprimí (las etiquetas se imprimieron como texto).

+0

Gracias por tanto las grandes respuestas. Upvoted ambos. Elegí la que hice porque era específica para mi ejemplo. – Vaccano

+0

Más solución mejor: http://stackoverflow.com/questions/947614/changing-label-properties-programmatically – digz6666

Respuesta

20

Visual Basic versión:

Dim tb As New TextBlock 

Dim b As New Bold 
b.Inlines.Add(New Run("bold text")) 

tb.Inlines.Add(b) 
tb.Inlines.Add(New Run("random non bold text")) 

C# Versión:

TextBlock tb = new TextBlock(); 
var bold = new Bold(new Run("Bold Text")); 
tb.Inlines.Add(bold); 

var normal = new Run("Normal Text")); 
tb.Inlines.Add(normal); 
+0

¿Alguien sabe de una manera como tb.Inlines.Clear(); tb.Inlines.Add (Parse (myXamlText)); ? – Christoph

19

Este es el código de la página web de MSDN, que creo que va a ayudar a (http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.aspx).

XAML

<TextBlock Name="textBlock1" TextWrapping="Wrap"> 
    <Bold>TextBlock</Bold> is designed to be <Italic>lightweight</Italic>, 
    and is geared specifically at integrating <Italic>small</Italic> portions 
    of flow content into a UI. 
</TextBlock> 
<Button Width="100" Margin="10">Click Me</Button> 
<TextBlock Name="textBlock2" 
    TextWrapping="Wrap" Background="AntiqueWhite" TextAlignment="Center" 
> 
    By default, a TextBlock provides no UI beyond simply displaying its contents. 
</TextBlock> 
<Button Width="100" Margin="10">Click Me</Button> 

C#

TextBlock textBlock1 = new TextBlock(); 
TextBlock textBlock2 = new TextBlock(); 

textBlock1.TextWrapping = textBlock2.TextWrapping = TextWrapping.Wrap; 
textBlock2.Background = Brushes.AntiqueWhite; 
textBlock2.TextAlignment = TextAlignment.Center; 

textBlock1.Inlines.Add(new Bold(new Run("TextBlock"))); 
textBlock1.Inlines.Add(new Run(" is designed to be ")); 
textBlock1.Inlines.Add(new Italic(new Run("lightweight"))); 
textBlock1.Inlines.Add(new Run(", and is geared specifically at integrating ")); 
textBlock1.Inlines.Add(new Italic(new Run("small"))); 
textBlock1.Inlines.Add(new Run(" portions of flow content into a UI.")); 

textBlock2.Text = 
    "By default, a TextBlock provides no UI beyond simply displaying its contents."; 
Cuestiones relacionadas