Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Как получить доступ из моего класса к экземпляру окна в WPF?

#wpf #c_sharp


Собственно хотелось бы обратится к элементам UI главного окна приложения, только
вот непонятно каким образом. Понятное дело, что из самого класса окна к контролам легко
получить доступ, а вот чтобы из стороннего - непонятно как. (Передавать их по ссылке
не годится).
Передавать контролы или само окно в класс по ссылке не годится, так как в нём есть
методы, которые должны асинхронно выполняться с обработчиками окна. Есть ли какой-то
ещё способ? В противном случае придётся использовать ISynchronizeInvoke, а этого хотелось
бы избежать.    


Ответы

Ответ 1



Передавать контролы по ссылкам, конечно, не стоит. Нужно создать event в главном окне и уведомлять его через этот event о необходимости изменения контролов. Это если в одном потоке находятся главное окно и тот, кто посылает ему уведомление. // Какой то класс public class MyClass { public event MyDelegate MyDelegateEvent; // Ваш евент public void f() { // При вызове функции f() уведомляем главное окно (и всех кто подпишется на него) MyDelegateEvent(); } } public delegate void MyDelegate(); // Делегат public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); MyClass my = new MyClass(); // Это просто создание нашего класса // Создаем наше уведомление my.MyDelegateEvent += new MyDelegate(my_MyDelegateEvent); } void my_MyDelegateEvent() { // Изменяем нужные контролы } }

Комментариев нет:

Отправить комментарий