Как я могу поднять событие из любого места в моем приложении WPF? - PullRequest
2 голосов
/ 12 ноября 2008

У меня есть базовая страница BasePage, которая вызывает событие, отображающее сообщения для пользователя. Отлично работает на всех страницах, полученных из BasePage. Я хочу сделать то же самое из пользовательских элементов управления, но они не наследуются от BasePage.

То, что я хочу, - это центральное место, куда я могу позвонить откуда угодно, и в этом коде оно вызовет событие. Где хорошее место, чтобы поставить этот код:

    public void DisplayMessage(string message)
    {
        RaiseEvent(new MessageNotificationEventArgs(MessageNotificationEvent, message));
    }

чтобы я мог звонить откуда угодно? RaiseEvent находится в классе UIElement, поэтому он должен идти куда-то, что является UIElement.

Ответы [ 2 ]

3 голосов
/ 14 ноября 2008

Одним из решений проблемы является использование Event Aggregator . Сам шаблон не зависит от платформы.

У Джереми Миллера есть пост о создании собственного агрегатора событий здесь .

Однако, Составной WPF (ранее Prism) делает это, и он оптимизирован для WPF. Подробности можно найти здесь .

3 голосов
/ 12 ноября 2008

Вместо того, чтобы использовать события для этого, вы должны использовать Commanding - Джош Смит написал отличную статью по этому поводу: http://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...