2012-07-25 4 views
0

좋아, 이제 Microsoft 드래그 앤 드롭 응용 프로그램을 WPF 앱에 임베드했습니다. 드래그 앤 드롭 기능은 ViewModel에서 매우 어렵 기 때문에 코드 뒤에 있습니다. 하지만 지금은 코드에서 UserControl 팝업 창을 열어야합니다. 내 시도는 코드 창에서 ViewModel의 메서드를 호출하여 새 창 이벤트를 게시하고 게시하는 것이 었습니다. 불행히도, 할당되지 않은 IEventAggregator 때문에 null 참조를 얻습니다. Caliburn.Micro를 사용하고 있기 때문에 ViewModel에 들어가는 것이 우선 순위이며 게시 할 이벤트를 얻고 싶습니다.MVVM 및 Caliburn.Micro의 코드 뒤에 UserControl을 열어 두었습니다.

요약하면, IEventAggregator에서 Null 참조를 얻지 않고 코드 숨김에서 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 : 나는 뒤에 코드로 EventAggregator을 얻고 NewWindow 이벤트를 킥오프 뷰 모델로 통과했다

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

답변

0

. CM에서 IoC 호출을 사용하여 종료되었습니다.

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

관련 문제