如何实现WPF ListBox循环加载对话框

本文关键字:ListBox 循环 加载 对话框 WPF 何实现 实现 | 更新日期: 2023-09-27 18:23:54

我有一个WPF C#应用程序,它解析并加载1Gig文本文件。此应用程序解析文本文件的当前加载时间约为27秒。因此,我想制作一个覆盖的圆形对话框,在ListBox的中间显示加载过程。加载完成后,循环对话框必须消失。

是否可以将其作为一个单线程应用程序?

在过去的几天里,我一直在网上寻找可能的解决方案。在我看来,如果可能的话,它一定是一个UserControl,但我还没有找到任何直接的解决方案?

我的列表框AXML:

<ListBox x:Name="listBoxTrackers" HorizontalAlignment="Left" Height="448" Margin="30,46,0,0" VerticalAlignment="Top" Width="740" SelectionChanged="listBoxTrackers_SelectionChanged" MouseDoubleClick="listBoxTrackers_MouseDoubleClick">
        [put the dialog overlay here]
    </ListBox>

如何实现WPF ListBox循环加载对话框

您正在使用哪个版本的.NET?从4.0开始,您通常会创建一个异步函数来读取文本文件,调用该函数以返回任务,显示覆盖在等待的控件上的动画控件,然后等待返回的任务,并在完成后再次隐藏动画。

当然,更好的方法是显示一个进度控件,并让文本文件解析器发布您分配给进度控件的进度状态,这样您的用户就可以看到解析的进度。当然,您也可以在加载时在列表控件中显示结果。

有很多选择,但它们都将是某种形式的多线程,但你不应该害怕——wpf用户界面就是考虑到这一点而构建的。

换句话说,看看这里的答案:使用Async/Await 时的WPF ProgressBar用法