簡體   English   中英

從MVVM和Caliburn.Micro中后面的代碼打開UserControl

[英]Opening a UserControl from the code behind in MVVM and Caliburn.Micro

好的,所以我將Microsoft拖放應用程序嵌入到WPF應用程序中。 拖放功能很難在ViewModel中實現,因此我在后面的代碼中有了它。 但是現在我需要從后面的代碼中打開UserControl彈出窗口。 我的嘗試是從背后的代碼中調用ViewModel中的方法,以嘗試發布新的窗口事件。 不幸的是,由於未分配IEventAggregator,所以我得到的引用為空。 由於我使用的是Caliburn.Micro,因此進入ViewModel是一個優先事項,並且我想讓該事件發布。

總之,如何從背后的代碼在ViewModel中發布事件(在IEventAggregator上沒有空引用)?

背后的代碼:

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"));
    }

我必須將EventAggregator放入后面的代碼中,並將其傳遞到ViewModel中以啟動NewWindow事件。 我最終在CM中使用了IoC呼叫。

IEventAggregator,即= IoC.Get <IEventAggregator>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM