我有一个像
这样的字符串数组string[] strngData = new string[] {"12","11","23","34"};
此字符串数组长度最多可达4000.我需要为每个字符串创建一个文本框,并在scrollviewer中的stackpanel内加载所有文本框。
随着字符串数量的增加和文本框数量的增加,将控件呈现给UI的时间也越来越长。显示4000多个字符串需要大约18秒以上。
有没有办法改善渲染时间?
答案 0 :(得分:0)
<ListView Name="x" ItemsSource="..." HorizontalContentAlignment="Stretch" VirtualizingPanel.IsVirtualizing="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel HorizontalAlignment="Stretch" Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=/}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
有一些关键时刻:你必须在ItemsPanel模板中使用VirtualizingStackPanel代替通常的StackPanel; TextBox.Text绑定路径必须等于/
(使用当前项);我还测试了ObservaleCollection的示例,因此使用List可能会禁止您编辑项目位置,计数等。