使用 Prism 时如何传递和接收 Sender 事件参数?

How do I pass and receive the Sender event parameter when using Prism?

在典型的 .NET 事件处理程序语法中,我们接收一个 Sender 对象作为第一个参数:

Private Sub Button_Click(Sender As Object, e As EventArgs) Handles Me.Button.Click
End Sub

此参数中包含的值可用于任意数量的场景。

但是,当使用 Prism 事件聚合器时,似乎不存在此类 Sender 参数。因此我们似乎无法知道 which/what/who 引发了事件。

有没有办法在使用 Prism 时 send/receive 发件人?

您可以将发件人放在有效载荷中:

public class MyPayload
{
    public MyPayLoad( object sender, SomeType someData )
    {
        Sender = sender;
        SomeData = someData;
    }

    public object Sender { get; }
    public SomeType SomeData { get; }
}

eventAggregator.GetEvent<MyEvent>().Publish( new MyPayload( this, myData ) );

不过,我会在真实应用中为发件人使用比 object 更具体的内容。