2009-11-25 5 views
16

Dans l'objet TextBlock, vous pouvez formater le texte dans le XAML comme ceci:WPF - TextBlock - Format texte Programmatically

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

Comment faites-vous les balises "Bold" programme?

J'ai essayé de les mettre dans la propriété text et il les a juste imprimés (les étiquettes ont été imprimées sous forme de texte).

+0

Merci pour les deux grandes réponses. Upvoted les deux. J'ai choisi celui que j'ai fait parce que c'était spécifique à mon exemple. – Vaccano

+0

Meilleure solution: http://stackoverflow.com/questions/947614/changing-label-properties-programmatically – digz6666

Répondre

20

Visual Basic Version:

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# Version:

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

Est-ce que quelqu'un connaît un moyen comme tb.Inlines.Clear(); tb.Inlines.Add (Analyser (myXamlText)); ? – Christoph

19

Voici le code à partir du site MSDN, qui je pense contribuera à (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."; 
Questions connexes