我使用浏览文件对话框来允许用户选择多个图像。如果选择了很多图像,按预期方式需要一点。以下是我对所选图像做的一个例子。我将文件路径循环到图像并创建用户控件的实例,用户控件具有图像控件和其他一些控件。我创建此控件的实例,然后将其添加到在关联窗口xaml文件中创建的现有的stackPanel。下面的示例工作正常,但我试图更好地理解BackGroundWorker,我了解如何设置它的基本知识,它的事件,并传回一个值可以更新进度栏,但因为我的循环在下面的启动时间将usercontrol实例添加到现有的stackPanel中,它将不起作用,处于不同的线程中。 BackGroundWorker是否适用于这样的示例?如果是这样,更新线程之外的ui(我的堆栈面板)的最佳方法是什么?我对wpf相当陌生,除了测试它之外,从未使用过BackGroundWorker,它只是用int值更新进度,所以我希望这个问题有意义,如果我的目标只是让我知道。感谢您的任何想法。wpf BackgroundWorker - 关于更新UI
我现在正在做这件事的例子,它工作正常。
protected void myMethod(string[] fileNames) {
MyUserControl uc;
foreach (String imagePath in fileNames) {
uc = new MyUserControl();
uc.setImage(imagePath);
stackPanel.Children.Add(uc);
progressBar.Value = ++counter;
progressBar.Refresh();
}
}
这个类我有这个,所以我可以有进度刷新以下: