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

时间:2015-11-22 13:53:30

标签: c# wpf listbox

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

是否可以将其保留为单线程应用程序?

我花了最近几天的时间在网上寻找可能的解决方案。如果可能的话我会看到它的方式然后它必须是UserControl,但我还没有找到任何直接的解决方案?

我的ListBox 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>

1 个答案:

答案 0 :(得分:1)

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

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

有很多选项,但它们都是某种形式的多线程,但你不应该害怕 - wpf用户界面就是为此而构建的。

换句话说,看看这里的答案: WPF ProgressBar usage when using Async/Await