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模式的情況下這樣做,因爲它只是一個小小的代碼片段,並且帶來一些更復雜的並不好 –