WPF 加载控件需要花费大量时间

本文关键字:时间 加载 控件 WPF | 更新日期: 2023-09-27 18:32:25

我有一个字符串数组,比如

string[] strngData  = new string[] {"12","11","23","34"};

此字符串数组长度可能最大为 4000。我需要为每个字符串创建一个文本框,并在滚动查看器的堆栈面板中加载所有文本框。

随着字符串数量的增加和文本框数量的增加,将控件呈现到 UI 所需的时间会花费更多时间。 要显示 4000+ 个字符串,大约需要 18+ 秒。

有没有办法缩短渲染时间?

WPF 加载控件需要花费大量时间

n 个

堆栈面板的位置,您可以将 ListView(具有内置的延迟 UI 加载)与自定义 ItemTemplate 和 ItemsPanelTemplate:

<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;文本框文本绑定路径必须等于/(处理当前项);我还测试了 ObservaleCollection 的示例,因此使用 List 可能不允许您编辑项目位置、计数等。