さて、私はマイクロソフトのドラッグアンドドロップアプリケーションを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"));
}