c# - 使用静态类对主窗口的引用 - 好的做法?

标签 c# wpf c#-4.0

我有一个 WPF 应用程序,其主窗口类称为 MainWindow。 由于我有其他类需要访问 UI 线程的 Dispatcher 来更新有界列表,所以我找到了这个解决方案:

我做了一个静态类:

 static class UI 
    {
        static public MainWindow window;
    }

并在应用程序构造函数中添加了以下行:

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            UI.window = this;
...

现在,我可以使用 UI.window.Dispatcher.Invoke() 访问我的 GUI 的任何组件。

问题是 - 这是一种好的编程习惯吗? 有更好的方法吗?

谢谢

更新:

我似乎只有在更新绑定(bind)到第 3 方控件的 ObservableCollection 时才会抛出异常。我有另一个静态 OC 绑定(bind)到列表框(以显示更新的消息),我可以从其他线程更新它而不使用调度程序。 怎么会? 是静态OC还是跟控件有关?

最佳答案

Since I have other classes that need to access the Dispatcher of the UI thread to update bounded lists

就个人而言,如果您需要这个,我只会保存对 Dispatcher 的引用,而不是对整个 UI 的引用。

提供对 Window 本身的引用可能会引起混淆。这里的意图不是很清楚。

关于c# - 使用静态类对主窗口的引用 - 好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4776704/

相关文章:

WPF GroupBox 标题对齐问题

c# - ObservableCollection.Contains() 无法正常工作

c# - 使用 C# : A better design to perform validation in Value Objects 清理架构

javascript - 当我的模型更新时,AngularJS 1.4.8 在 select 中创建一个空选项

c# - 我可以使用 VS 2013 的 Express 版本开发商业桌面应用程序吗?

c# - 如何从MobileServiceUser获取用户名、电子邮件等?

c# - 如何创建这样的匿名类型 var c = List<string, string[]>()

c#-4.0 - 验证两个列表是否在 C# 中共享值

来自远程计算机的 Mysql 服务器

c# - 以逗号分隔数以千计 asp.net