长文本和TextTrimming时TextBlock问题

时间:2012-09-03 13:36:51

标签: c# .net wpf xaml

我有一个带有TextTrimming="CharacterEllipsis"TextWrapping="NoWrap"的TextBlock和一个大约140,000个符号的超长文本。我将此文本放入TextBlock,然后TextBlock将此文本显示为多行控件,并在每行中进行修剪。

XAML

    <Window x:Class="WpfApplication3.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <TextBlock x:Name="textBlock" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" Width="500"/>
        </Grid>
    </Window>

C#

    public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();
                string str = "q ";
                for(int i = 0; i < 20000; i++) {
                    str += "qwetre ";
                }
                textBlock.Text = str;
            }
        }


有什么想法吗?是MS的错误,还是我可以改变这种行为?

2 个答案:

答案 0 :(得分:2)

Textblock TextWrapping属性默认设置为NoWrap。

因此,除非你

  1. 明确将其设置为Wrap / WrapWithOverflow或
  2. 使用文字
  3. 添加<LineBreak/>个标签

    文本将始终仅显示在一行上。

    @Mirimon我完全按照你所展示的那样运行了这个项目,我只看到一行!

答案 1 :(得分:2)

我在问题上找到了答案。 TextBlock有4.5框架的这种行为(我已经安装了VS2012),我在没有VS2012的计算机上试过,工作正常,只有一行。