嗨,我希望你們其中一位可以幫助我一些語法。在視圖模型與對象之間使用Prism 6事件聚合器作爲有效載荷
因此,我正在關注使用Prism Event Aggregator將消息從一個ViewModel發送到另一個的示例https://www.codeproject.com/Tips/591221/Simple-EventAggregator-in-WPF-PRISM。
以下代碼在發佈單個字符串作爲有效內容時效果很好。
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; }
}
}
出版商(在ViewModel1):
OrderSelectedEvent_SS.Instance.Publish(_strCurrentOrder);
用戶(在ViewModel2:
OrderSelectedEvent_SS.Instance.Subscribe(OrderSelectedEventHandler_SS);
private void OrderSelectedEventHandler_SS(string strSelectedOrder)
{
CurrentOrder = strSelectedOrder;
}
我試圖做的是修改接受一個對象(有多個類字符串)作爲有效載荷。 這是我到目前爲止:
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; }
}
}
出版商(在ViewModel1):
OrderSelectedEvent.OrderSelectedPayload ospl = new OrderSelectedEvent.OrderSelectedPayload();
ospl.SelectedOrder = _strCurrentOrder;
ospl.SelectedE32 = _strCurrentE32JobNumber;
OrderSelectedEvent.Instance.Publish(ospl);
用戶(在ViewModel2:
OrderSelectedEvent.Instance.Subscribe(OrderSelectedEventHandler);
我在這裏得到的subsriber的錯誤:**錯誤:無法從 '方法組' 轉換到'行動'****,我似乎無法弄清楚我需要做什麼。
private void OrderSelectedEventHandler(OrderSelectedEvent.OrderSelectedPayload ospl)
{
CurrentOrder = ospl.SelectedOrder;
CurrentE32JobNumber = ospl.SelectedE32;
}
在此先感謝您提供的任何指導。
您試圖使用什麼版本的棱鏡?最新版本是6.2。 –
好的,那篇文章提供的解決方案就是垃圾。這樣你就可以在'PubSubEvent'''中新建'EventAggregator',而不是從IOC容器中獲取。您需要查看(http://prismlibrary.readthedocs.io/en/latest/WPF/09-Communication/)以查看更多關於使用Prism進行事件聚合的信息。將代碼項目示例取消加入書籤,並且忘記了您曾經看過它。 –
我正在使用最新的Prism 6.2。我會研究這個解決方案。謝謝回覆。 – slaws