0
我怎样才能更新第二个窗口(这是一个简单的WPF窗口与进度条来显示进度)从我的主窗口内循环?C#从第一个更新第二个窗口
嗯,我加载了几个文件,可以花费大约10秒。加载时,我想我的ProgressWindow显示已加载的文件数量。
这里是我的MainThread:
private void loadFiles(String[] paths) {
// Show Progress Window
MyProgressWindow progWindow = new MyProgressWindow();
progWindow.ShowProgressWindow(0, paths.Length);
//Globals.MyProgressController.ShowProgressWindow(0, paths.Length);
foreach (String path in paths) {
// Load the file
loadFile(path);
// Refresh the Table
refreshTableAsync();
// Update Progress Window
progWindow.UpdateProgressWindow(1);
//Globals.MyProgressController.UpdateProgressWindow(1);
}
// Close Progress Window
progWindow.CloseProgressWindow();
//Globals.MyProgressController.CloseProgressWindow();
}
这里是ProgressWindowController
public class MyProgressWindow {
private ProgressWindow progressWindow;
public void ShowProgressWindow(int startIndex, int maxIndex) {
progressWindow = new ProgressWindow();
progressWindow.Initialize(startIndex, maxIndex);
progressWindow.Show();
}
public void UpdateProgressWindow(int value) {
progressWindow.Update(value);
//progressWindow.Update();
}
public void CloseProgressWindow() {
progressWindow.Close();
}
}
最后的ProgressWindow本身:
public partial class ProgressWindow : Window {
private int actualValue = 0;
private int maxValue = 0;
public ProgressWindow() {
InitializeComponent();
}
public void Initialize(int startValue, int maxValue) {
this.actualValue = startValue;
this.maxValue = maxValue;
}
public void Update(int value) {
actualValue += value;
lblPercentage.Content = actualValue + "/" + maxValue;
pbProgress.Value = ((double)value/maxValue) * 100;
}
}
我已阅读thati应通过线程做,但我无法实现它,而且我找到的所有帮助其他人的代码都没有不要做我需要的东西。
感谢您的帮助
您可以使用[MVVM](https://en.wikipedia.org/wiki/Model_View_ViewModel)模式。你有一个共同的ViewModel。主窗口正在更新,SubWindow只显示数据。 – Jens
也可以在公共区域添加活动 – ZSH
嗯,我认为我可以在没有MVVM模式的情况下这样做,因为它只是一个小小的代码片段,并且带来一些更复杂的并不好 –