0

さて、私はマイクロソフトのドラッグアンドドロップアプリケーションをWPFアプリに埋め込んでいます。ドラッグアンドドロップ機能をViewModelで実現するのは非常に難しいので、コードビハインドにあります。しかし、今度はコードビハインドからUserControlポップアップウィンドウを開く必要があります。私の試みは、コードビハインドからViewModelのメソッドを呼び出して、新しいウィンドウイベントを公開しようとしたことです。残念ながら、IEventAggregatorが割り当てられていないため、null参照を取得します。Caliburn.Microを使用しているので、ViewModelに入ることが優先事項であり、イベントを公開したいと思います。

要約すると、コードビハインドから(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:

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

1 に答える 1

0

EventAggregatorをコードビハインドに取り込み、それをViewModelに渡して、NewWindowイベントを開始する必要がありました。結局、CMでIoC呼び出しを使用することになりました。

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

于 2012-07-26T14:54:34.130 に答える