0

好的,所以我将微软拖放应用程序嵌入到 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);
        }
    }

一些视图模型:

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

1 回答 1

0

我必须将 EventAggregator 放入后面的代码中并将其传递给 ViewModel 以启动 NewWindow 事件。我最终在 CM 中使用了 IoC 调用。

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

于 2012-07-26T14:54:34.130 回答