StringFormat
Permet de mettre en forme une chaine de caractères. Présent depuis le Framework .NET 3.5 SP1.
|
<TextBlock Text="{Binding Path=MaPropriété, StringFormat=Texte {0} texte}" />
<!-- \ et {} servent de caractère d'échappement après le signe = -->
<TextBlock Text="{Binding Path=MaPropriété, StringFormat=\{0\}}" />
<!-- Format d'une date -->
<TextBlock Text="{Binding Path=Date, StringFormat=\{0:d\}}" />
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:dddd MMMM dd}}" />
|
MultiBinding
Permet de former un string composé de plusieurs Binding.
|
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Texte {0} texte {1} texte">
<Binding Path="MaPropriété1" />
<Binding Path="MaPropriété2" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
|
|
Si le StringFormat commence par { il faut le précéder de {}.
StringFormat="{}{0} - {1}" |
Différent styles dans le même TextBlock
|
<TextBlock>
<TextBlock.Inlines>
<Run Text="{Binding Path=Timestamp, StringFormat={}{0} - }" />
<Run FontWeight="DemiBold" Text="{Binding Path=Message}" />
</TextBlock.Inlines>
</TextBlock>
|
Retour à la ligne
|
<TextBlock Text="Ligne 1 Ligne 2"</TextBlock>
<TextBlock>Ligne 1<LineBreak />Ligne 2</TextBlock>
|
Propriétés
Couleur
|
<TextBlock Foreground="Red" />
|
|
tbk.Foreground = new SolidColorBrush(Colors.Red);
|
Center, Justify, Left, Right
|
<TextBlock TextWrapping="Wrap"></TextBlock>
|
None |
le texte n'est pas coupé, il déborde. Valeur par défaut
|
CharacterEllipsis |
le texte est coupé et (...) sont affichés.
|
WordEllipsis |
le texte est coupé au dernier mot et (...) sont affichés.
|
Police / Font
FontFamily |
Segoe UI par défaut sur Windows 10
|
FontSize |
12 par défaut
|
FontStretch |
Normal/Medium par défaut, Condensed, Expanded, ...
|
FontStyle |
Normal par défaut, Italic, Oblique
|
FontWeight |
Normal par défaut, Bold, Light, ...
|
Sélection du texte
TextBlock ne permet pas de sélectionner du texte. Pour cela, il faut utiliser une TextBox.
|
<TextBox Background="Transparent"
BorderThickness="0"
Text="{Binding MyTextBinding, Mode=OneWay}"
IsReadOnly="True"
TextWrapping="Wrap" />
|
Label est un Control, il peut donc:
- avoir un custom control template
- contenir des données autres qu'un string
- utiliser un DataTemplate
TextBlock hérite directement de FrameworkElement et n'est donc pas un Control.
- Label est grisé lorsqu'il est disable
- Label supporte les access keys
- TextBlock est plus léger