我有一個名爲MainWindow的主窗口類的WPF應用程序。 因爲我有需要訪問UI線程的調度來更新界列出了其他班,我發現這個解決方案:從靜態類中使用對主窗口的引用 - 良好實踐?
我做了一個靜態類:
static class UI
{
static public MainWindow window;
}
而在添加以下行應用程序的構造函數:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
UI.window = this;
...
現在我可以用UI.window.Dispatcher.Invoke().
訪問我的GUI隨處可見的部件問題是 - 這是一個很好的編程習慣嗎? 有沒有更好的方法呢?
謝謝
更新:
我似乎只有當我更新這勢必第三方控制一個ObservableCollection來獲得拋出的異常。我有另一個靜態OC綁定到列表框(以顯示更新的消息),我可以從其他線程更新一個不使用調度程序。 怎麼回事? 是因爲它的靜態OC還是與控件有關?
那是一個好主意。但是這種情況下的一般做法是什麼?我看到的所有示例都假定我使用的是Window類中的Dispatcher,而不是其他類中的Dispatcher。 – Sol 2011-01-23 21:54:41
分派器可以來自任何UI元素。作爲一種慣例,避免使用靜態成員。使用Dispatcher,你可以傳入一個成員,但是你也可以在頂層進行一次這樣的事情。但是,我可能只是在創建第一個窗口(或應用程序)時將其設置一次,然後從那裏使用它... – 2011-01-23 21:55:57