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