颜色
1 2 3 4 5 6 7 8
| <TextBlock Text="十六进制红色" Foreground="#FF0000" />
<TextBlock Text="半透明蓝色" Foreground="#800000FF" />
<TextBlock Text="简化红色" Foreground="#F00" />
|
行高
长文本显示
在WPF中,如果想要处理TextBlock中文本超出部分的显示,通常可以使用以下几种方法来实现文本的裁剪或者显示省略号:
使用TextTrimming属性
TextBlock控件有一个TextTrimming属性,它允许你指定当文本超出控件边界时如何裁剪。常用的选项包括:
- None: 默认值,不进行裁剪,文本可能会超出控件边界而被遮挡。
- CharacterEllipsis: 超出部分以省略号(…)表示,适用于单行文本。
- WordEllipsis: 超出部分以省略号表示,但会确保不会截断单词,适用于单行文本。
示例:
1 2 3
| <TextBlock Text="Your long text here" TextTrimming="CharacterEllipsis" Width="100"/>
|
如果希望在用户将鼠标悬停在TextBlock上时显示完整的文本内容,可以将ToolTip绑定到Text属性。
示例:
1 2 3
| <TextBlock Text="Your long text here" TextTrimming="CharacterEllipsis" ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}"/>
|
使用TextBlock的MaxWidth属性
通过设置TextBlock的MaxWidth属性,可以限制文本的宽度,超出部分会被裁剪。
示例:
1 2
| <TextBlock Text="Your long text here" MaxWidth="100"/>
|
TextBlock 文本展示
选中和悬浮变色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <TextBlock Padding="13" FontSize="14" Text="{Binding directorname}" TextTrimming="CharacterEllipsis"> <TextBlock.Style> <Style TargetType="{x:Type TextBlock}"> <Setter Property="Foreground" Value="{Binding state, Converter={StaticResource ColorTextConvert}}" /> <Setter Property="FontWeight" Value="{Binding state, Converter={StaticResource TextBoldConverter}}" /> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="#2D8CF0" /> </Trigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock>
|
文字阴影
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <TextBlock Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14" Foreground="White" Text="退出控制"> <TextBlock.Effect> <DropShadowEffect Direction="290" Opacity="0.7" ShadowDepth="2" Color="Black" /> </TextBlock.Effect> </TextBlock>
|
文本换行
方式1
转义字符换行
代码中
1
| this.TextBlock1.Text = "AAAAAAA\nBBBBBBBB";
|
XAML中
1
| <TextBlock Text="AAAAAAA
BBBBBB" />
|
方式2
设置自动换行
1
| <TextBlock Width="60" TextWrapping="Wrap" Text="AAAAAAA BBBBBB"/>
|
方式3
使用InLines属性的LineBreak来换行
简单的来说就是,显示的XAML表示用
1 2 3 4 5
| <TextBlock Width="60" TextWrapping="Wrap"> <Run>AAAAAA</Run> <LineBreak/> <Run>BBBBBB</Run> </TextBlock>
|
后台代码添加
1 2 3
| TextBlock1.Inlines.Add(New Run("AAAAAA")); TextBlock1.Inlines.Add(New LineBreak()); TextBlock1.Inlines.Add(New Run("BBBB"));
|
另外如果RUN里面有大量的文字表示,超过了TextBlock的Width时候,文字会被剪切掉,而不是自动换行,这点需要注意一下