4
我有一個WPF/C#程序與幾個類,MainWindow.cs類有用戶控件,我想用其他類中發生的計算狀態更新。在搜索並借用示例之後,我想出瞭如何在其他類中設置Event,並在發生某些變化時調用它。然後,只要主類有一個處理程序綁定該事件,我可以適當地更新UI的東西(狀態欄等)。下面是我在做什麼的精簡版本:是否可以引用其他類的MainWindow.cs?
namespace Program
{
public partial class MainWindow : Window
{
public void SetUpHandler()
{
TestA.WorkerProgressThingie += new ProgressChangedEventHandler(TestA_ProgressChanged);
}
void TestA_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage
}
}
public class TestA
{
public static event ProgressChangedEventHandler WorkerProgressThingie;
public static void SomeFunction()
{
int value = 0;
//...(some boring code that does something here)
ProgressChangedEventArgs e = new ProgressChangedEventArgs(value, null);
if (WorkerProgressThingie != null)
WorkerProgressThingie.Invoke(null, e)
}
}
}
- 請問有沒有辦法簡單地調用來自其他類的進度財產? (即MainWindow.progressBar.Value)?
- 當我調用事件時,「object sender」參數的用途是什麼,它應該如何正常使用?我看到的例子總是使用'null'。
謝謝!
謝謝!很有幫助。想知道,你能解釋一下你的意思嗎?你的意思是將進度條綁定到外部類中的值(即TestA類)嗎? – superwillis
如果您正在WPF中開發,也許可以在MVVM體系結構上進行一些閱讀; http://msdn.microsoft.com/en-us/magazine/dd419663.aspx。視圖應該直觀地表示ViewModel的狀態,在這種情況下是計算任務進度的狀態。 –
感謝您的提示。跟隨鏈接,發現另一個更具體的文章,這是非常翔實的。在此處發佈供其他人使用:「使用數據綁定和WPF自定義數據顯示」(http://msdn.microsoft.com/zh-cn/magazine/cc700358.aspx) – superwillis