WPF加载控件占用大量时间

时间:2014-11-28 12:23:31

标签: c# wpf

我有一个像

这样的字符串数组
string[] strngData  = new string[] {"12","11","23","34"};

此字符串数组长度最多可达4000.我需要为每个字符串创建一个文本框,并在scrollviewer中的stackpanel内加载所有文本框。

随着字符串数量的增加和文本框数量的增加,将控件呈现给UI的时间也越来越长。显示4000多个字符串需要大约18秒以上。

有没有办法改善渲染时间?

1 个答案:

答案 0 :(得分:0)

堆栈窗口的位置你可以使用自定义ItemTemplate和ItemsPanelTemplate的ListView(具有inbuild延迟UI加载):

<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可能会禁止您编辑项目位置,计数等。