【6月日新计划39】WPF中TextBlock字符過長如何顯示

405 阅读1分钟

1. TextBlock

1.1 Attribute

TextBlock的内容太长,可以使用以下属性来控制:

  • TextTrimming:该属性用于修剪文本,有几种修剪方式可以选择,如None(不修剪)、WordEllipsis(在单词边界处修剪并显示省略号)、CharacterEllipsis(在字符边界处修剪并显示省略号)等。
  • TextWrapping:该属性用于控制文本换行方式,有Wrap(自动换行)、NoWrap(不换行)两种选项。

1.2 Code

1.2.1 使用省略號

<TextBlock Text="{Binding xxxx, Mode=TwoWay}" 
           TextTrimming="WordEllipsis" 
           TextWrapping="NoWrap" 
           Style="{StaticResource ContentTextBlockStyle}"> 
    <TextBlock.ToolTip> 
       <ToolTip Content="{Binding xxxx, Mode=TwoWay}"/> 
    </TextBlock.ToolTip> 
</TextBlock>

1.2.2 可以上下左右滑動

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">  
        <TextBlock TextWrapping="Wrap" Width="500">   
            <Run Text="{Binding xxxx, Mode=TwoWay}"/>  
        </TextBlock>  
    </ScrollViewer>  

2. 屬性的繼承

比如我的樣式都是來自於Material Design,如何進行擴展

使用BaseOn關鍵字,否則就是腹寫原來的樣式

    <UserControl.Resources>
        <Style
            x:Key="ResultTextBlock"
            BasedOn="{StaticResource MaterialDesignBody1TextBlock}"
            TargetType="TextBlock">
            <Setter Property="Margin" Value="8,0,0,0" />
            <Setter Property="FontWeight" Value="Bold" />
            <Setter Property="FontSize" Value="35" />
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="TextAlignment" Value="Left" />
        </Style>
    </UserControl.Resources>