Mit Prism 6 Event Aggregator zwischen view-Modelle mit einem Objekt als payload

Hallo ich hoffe einer von Euch könnte mir helfen mit einigen syntax.

So, ich bin nach diesem Beispiel https://www.codeproject.com/Tips/591221/Simple-EventAggregator-in-WPF-PRISM auf mit PRISMA Event Aggregator zum senden von Nachrichten von einem ViewModel zu einem anderen.

Folgende code funktioniert Super, wenn die Veröffentlichung eine einzelne Zeichenfolge als die Nutzlast.

internal class OrderSelectedEvent_SS : PubSubEvent<string>
{
    private static readonly EventAggregator _eventAggregator;
    private static readonly OrderSelectedEvent_SS _event;

    static OrderSelectedEvent_SS()
    {
        _eventAggregator = new EventAggregator();
        _event = _eventAggregator.GetEvent<OrderSelectedEvent_SS>();
    }

    public static OrderSelectedEvent_SS Instance
    {
        get { return _event; }
    }
}

Verlag (In ViewModel1):

OrderSelectedEvent_SS.Instance.Publish(_strCurrentOrder);

Abonnent (In ViewModel2:

OrderSelectedEvent_SS.Instance.Subscribe(OrderSelectedEventHandler_SS);
private void OrderSelectedEventHandler_SS(string strSelectedOrder)
    {
        CurrentOrder = strSelectedOrder;
    }

Was ich versuche zu tun, ist zu ändern, um zu akzeptieren ein Objekt (eine Klasse mit mehreren strings) als Nutzlast.
Hier ist, was ich habe, so weit:

internal class OrderSelectedEvent : PubSubEvent<object>
{
    private static readonly EventAggregator _eventAggregator;
    private static readonly OrderSelectedEvent _event;
    static OrderSelectedEvent()
    {
        _eventAggregator = new EventAggregator();
        _event = _eventAggregator.GetEvent<OrderSelectedEvent>();
    }

    public static OrderSelectedEvent Instance
    {
        get { return _event; }
    }

    public class OrderSelectedPayload
    {
        public string SelectedOrder { get; set; }
        public string SelectedE32 { get; set; }
    }
}

Verlag (In ViewModel1):

OrderSelectedEvent.OrderSelectedPayload ospl = new OrderSelectedEvent.OrderSelectedPayload();
ospl.SelectedOrder = _strCurrentOrder;
ospl.SelectedE32 = _strCurrentE32JobNumber;
OrderSelectedEvent.Instance.Publish(ospl);

Abonnent (In ViewModel2:

OrderSelectedEvent.Instance.Subscribe(OrderSelectedEventHandler); 

Ich bin immer ein Fehler hier auf der Subscriber: **FEHLER: cannot convert from 'Methode-Gruppe' zu 'Action'**** und ich kann nicht scheinen, um herauszufinden, was ich tun muss.

private void OrderSelectedEventHandler(OrderSelectedEvent.OrderSelectedPayload ospl)
{
    CurrentOrder = ospl.SelectedOrder;
    CurrentE32JobNumber = ospl.SelectedE32;
}

Dank im Voraus für jede Unterstützung, die Sie bieten kann.

  • Welche version von Prism werden Sie versuchen, diese mit? Die aktuellste version ist 6.2.
  • Okay, dieser Artikel bietet eine Lösung, die ist, naja, Schrott. Damit sind Sie new'ing bis ein EventAggregator im PubSubEvent ctor, anstatt sich von einem IOC-container. Sie müssen sich hier (prismlibrary.readthedocs.io/de/latest/WPF/09-Kommunikation) zu sehen, mehr über die event-aggregation mit PRISMA. Un-Lesezeichen, das Code-Projekt Beispiel, und vergessen Sie jemals sah.
  • Ich bin mit der aktuellen Prism-6.2. Ich sehen in dieser Lösung. Danke für die Antwort.
  • ist absolut richtig!!!! Die Lösung ist komplett Schrott. Es ist die schlechteste Umsetzung der event aggregator-ich denke, dass ich je gesehen habe.
  • Danke für die Kommentare. Ich finde eine bessere Umsetzung.
  • PRISMA-docs haben hier bewegt: prismlibrary.github.io/docs. Die Kommunikation Seite ist jetzt hier: prismlibrary.github.io/docs/wpf/Communication.html

InformationsquelleAutor slaws | 2017-02-25
Schreibe einen Kommentar