当我在TextBox中加载大约100KB的文本时,它开始变得非常滞后。 像滚动它等等。感觉很糟糕。
有没有合理的简单解决方法?
我希望能够加载高达1兆字节的文本,而不会在滚动方面造成很大的延迟。
除了滚动之外,选择文本或编辑文本时出现问题,它变得非常缓慢和不舒服。
答案 0 :(得分:2)
TextBox
没有虚拟化,因此实际上并不是为支持大量文本而设计的。您将需要使用不同类型的控件,并可能考虑您的文本扩展是否真的只需要一个字符串:它可以分解为更有意义的小对象吗?
RichTextBox
,ListBox
或DataGrid
都适合您应该使用的控件 - 取决于您想要做什么以及您可以分解多少文本分成几部分。
答案 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,因为您需要数据可编辑。
将数据拆分为更小的块也是更好的。