在我的程序中,我有一个非常冗长的文件输入操作。在此操作过程中,我的应用程序冻结,直到文件加载(因为,我无法点击任何内容)。因此,我试图将进度条实现为加载屏幕,以便用户不会认为有问题。我创建了一个.xaml窗口,其中包含一个进度条和一个附加的ViewModel和DataModel,以方便进度条的属性。
为简单起见,在文件打开时运行的例程位于大while
循环中。在此while循环之前,我打开加载窗口并将进度条的IsIndeterminate
属性更改为true
。
我只使用IsIndeterminate
属性,因为我只需要进度条看起来像这样:
但是,正如我之前提到的,在此过程中我的窗口冻结了。这也导致进度条冻结。如何在进行文件输入过程时显示此进度条并允许其运行?
修改
进度条的xaml:
<ProgressBar Name="Progress" Value="{Binding LoadScreenModel.Value}" Minimum="{Binding LoadScreenModel.Min}" Maximum="{Binding LoadScreenModel.Max}" IsIndeterminate="{Binding LoadScreenModel.IsIndeterminate}" />
进度条窗口的数据模型:
private int _value, _min = 0, _max = 100; //Progress Bar values
private bool _isIndeterminate;
public LoadingScreenDataModel()
{
}
//Progress Bar values
public int Value{...}
public int Min{...}
public int Max{...}
public bool IsIndeterminate{...}
运行文件输入例程的数据模型中的代码:
var LoadingWindow = new LoadingScreen();
LoadingWindow.Show(); //Open Window w/progress Bar
ViewModel.LoadScreenDataModel.IsIndeterminate = true;
while()
{... /* Run File input routines **/ ...}
ViewModel.LoadScreenDataModel.IsIndeterminate = false;
LoadingWindow.Close(); //Close Window w/Progress Bar