文本框滚动速度太慢,文本中有一个相当大的文本 - 有什么要做的吗?

时间:2014-04-06 02:33:55

标签: silverlight silverlight-4.0

当我在TextBox中加载大约100KB的文本时,它开始变得非常滞后。 像滚动它等等。感觉很糟糕。

有没有合理的简单解决方法?

我希望能够加载高达1兆字节的文本,而不会在滚动方面造成很大的延迟。

除了滚动之外,选择文本或编辑文本时出现问题,它变得非常缓慢和不舒服。

3 个答案:

答案 0 :(得分:2)

TextBox没有虚拟化,因此实际上并不是为支持大量文本而设计的。您将需要使用不同类型的控件,并可能考虑您的文本扩展是否真的只需要一个字符串:它可以分解为更有意义的小对象吗?

RichTextBoxListBoxDataGrid都适合您应该使用的控件 - 取决于您想要做什么以及您可以分解多少文本分成几部分。

答案 1 :(得分:1)

也许您可以尝试使用ItemsControl快速而廉价的解决方案,假设 - 正如其他人在我之前所做的那样 - 将您的文本分成更小的块。

<ItemsControl
    ItemsSource="{Binding Path=Paragraphs}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Mode=TwoWay}" BorderThickness="0"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanelTemplate>
        <VirtualizingStackPanel/>
    </ItemsControl.ItemsPanelTemplate>
</ItemsControl>

您可能需要删除TextBox模板(MouseOver状态等)

答案 2 :(得分:0)

您需要使用带虚拟化的Control,可能是DataGrid,因为您需要数据可编辑。

将数据拆分为更小的块也是更好的。