У меня есть приложение WPF с основным классом Window, которое называется MainWindow.Поскольку у меня есть другие классы, которым требуется доступ к Dispatcher потока пользовательского интерфейса для обновления ограниченных списков, я нашел это решение:
Я создал статический класс:
static class UI
{
static public MainWindow window;
}
И добавил следующеестрока в конструкторе приложения:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
UI.window = this;
...
Теперь я могу получить доступ к компонентам моего GUI везде, используя UI.window.Dispatcher.Invoke().
Вопрос в том, является ли это хорошей практикой программирования?Есть ли лучший способ сделать это?
Спасибо
Обновление:
Кажется, я получаю исключение только при обновлении ObservableCollectionкоторый связан с контролем третьей стороны.У меня есть еще один статический OC, связанный со списком (для отображения обновленных сообщений), и я могу обновить его из других потоков без использования диспетчера.Как так?Это потому что это статический OC или он связан с управлением?