使用 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
更具体的内容。
在典型的 .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
更具体的内容。