#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() { // Изменяем нужные контролы } }
Комментариев нет:
Отправить комментарий