Silverlight 文本框滚动速度太慢,里面有一个相当大的文本-有什么办法吗?

Silverlight 文本框滚动速度太慢,里面有一个相当大的文本-有什么办法吗?,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,当我在文本框中加载大约100KB的文本时,它就开始工作了。 比如滚动,等等。感觉很糟糕 是否有任何合理的简单解决方法 我希望能够加载高达1兆字节的文本,而不会在滚动时产生巨大的延迟 除了滚动之外,在选择文本或编辑文本时也会出现问题,这会变得非常缓慢和不舒服。您需要使用虚拟化控件,可能是数据网格,因为您需要编辑数据 最好将数据分割成更小的数据块。文本框没有虚拟化功能,因此不支持大量文本。您将需要使用另一种控件,并且可能需要考虑您的文本范围是否真的需要仅仅是一个字符串:是否可以将其分解为有意义的较小

当我在文本框中加载大约100KB的文本时,它就开始工作了。 比如滚动,等等。感觉很糟糕

是否有任何合理的简单解决方法

我希望能够加载高达1兆字节的文本,而不会在滚动时产生巨大的延迟


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

您需要使用虚拟化控件,可能是数据网格,因为您需要编辑数据


最好将数据分割成更小的数据块。

文本框没有虚拟化功能,因此不支持大量文本。您将需要使用另一种控件,并且可能需要考虑您的文本范围是否真的需要仅仅是一个字符串:是否可以将其分解为有意义的较小对象


RichTextBox
ListBox
DataGrid
都是您应该使用的控件类型的很好的候选者-这取决于您想做什么以及您可以将文本分解成多大部分。

也许您可以尝试一种快速而廉价的解决方案,使用
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>


您可能需要去掉
文本框
模板(鼠标悬停状态等)

列表框和
数据网格
将具有
SelectedItem
的概念,我认为这不会有帮助。使用虚拟化面板的
ItemsControl
应该可以完成这项工作。您尝试过它们吗,只使用一个项目?我不太确定他们的虚拟化有多深——是扩展到单个项目还是只扩展到多个项目。不过很容易测试。我认为这是一个误解:虚拟化只有在文本被分成更小的块并且每个块都有一个条目时才会产生效果。我不是建议在
ItemsControl
中只使用一项。该死,赏金丢失了,对不起。我不明白,为什么我不能在一天内完成afk并且仍然能够授予赏金看到这篇关于延迟滚动的文章:。您可能需要修改默认文本框模板以设置模板scrollviewer上的属性: