2012-07-25 37 views
0

好的,所以我將一個Microsoft拖放應用程序嵌入到WPF應用程序中。拖放功能在ViewModel中非常難以實現,所以我在後面的代碼中使用它。但是現在我需要從後面的代碼中打開一個UserControl彈出窗口。我試圖從後面的代碼中調用ViewModel中的方法來嘗試發佈新的窗口事件。不幸的是,由於未分配的IEventAggregator,我得到一個空引用。由於我使用Caliburn.Micro,因此進入ViewModel是一個優先事項,我希望事件發佈。從MVVM和Caliburn.Micro後面的代碼打開一個UserControl

總而言之,如何從後面的代碼(無需在IEventAggregator上獲得空引用)在ViewModel中發佈事件?

代碼背後:

public partial class SomeView : System.Windows.Controls.UserControl 
{ 
    IEventAggregator events; 
    _model = new SomeViewModel(); 
.... 

    private void ShapeDoubleClick(object sender, AxMicrosoft.Office.Interop.VisOcx.EVisOcx_MouseUpEvent e) 
    { 
     if (App.VisioControl.Document.Application.ActiveWindow.Selection.Count > 0) 
     { 
      _model.PublishEvent(events); 
     } 
    } 

SomeViewModel:

public void PublishEvent(IEventAggregator events) 
    { 
     events.Publish(new NewWindowEvent("SomeOtherViewModel")); 
    } 

回答

0

我不得不讓EventAggregator到後面的代碼,並將其傳遞到視圖模型揭開序幕NewWindow事件。我最終在CM中使用了IoC調用。

IEventAggregator ie = IoC.Get <IEventAggregator>();

相關問題