2 Stimmen

Wie kann ich ein Ereignis von überall in meiner WPF-Anwendung auslösen?

Ich habe eine Basisseite, BasePage, die ein Ereignis auslöst, das Nachrichten an den Benutzer anzeigt. Funktioniert hervorragend auf allen Seiten, die von BasePage abgeleitet sind. Ich möchte die gleiche Sache von Benutzer-Steuerelemente zu tun, aber sie nicht von BasePage erben.

Was ich möchte, ist eine zentrale Stelle, die ich von überall aus aufrufen kann, und in diesem Code wird ein Ereignis ausgelöst. Wo ist ein guter Ort, um diesen Code zu setzen:

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

so dass ich sie von überall aus aufrufen kann? RaiseEvent ist in der UIElement-Klasse, so muss es irgendwo gehen, die ein UIElement ist.

3voto

Ana Betts Punkte 72423

Anstatt Ereignisse zu verwenden, um dies zu tun, sollten Sie mit Commanding - Josh Smith schrieb einen großen Artikel über diese: http://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/

3voto

Eine Lösung des Problems ist die Verwendung eines Ereignis-Aggregator . Das Muster selbst ist plattformunabhängig.

Jeremy Miller hat einen Beitrag über den Aufbau eines eigenen Event-Aggregators veröffentlicht aquí .

Allerdings, Zusammengesetzte WPF (ehemals Prism) tut dies und ist für WPF optimiert. Die Einzelheiten sind zu finden unter aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X