我有一个名为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