我的应用松耦合,并使用EventAggregator(ea)在组件之间进行通信。 我有一个X_View和X_ViewModel。与其他组件一样,X_ViewModel通过依赖注入在引导程序中接收其EventAggregator引用,如下所示:
private static void ComposeObjects()
{
var ea = new EventAggregator();
var menu = new Presentation.Menu(ea);
var viewModel = new MainWindowViewModel(ea, menu);
viewModel.CurrentViewModel = new X_ViewModel(ea);
Current.MainWindow = new MainWindow(ea, viewModel);
}
初始化为ViewModel-First。
MainWindow.xaml包含一个绑定到ViewModel的ContentControl。 此文件还将ViewModel绑定到窗口资源中的相应View,如下所示:
<Window.Resources>
<DataTemplate DataType="{x:Type X_ViewModel}">
<local:X_View/>
</DataTemplate>
</Window.Resources>
现在的事情是,我可以触发事件和方法,但是我发现View上有一部分数据无法容纳或绑定到ViewModel。 (RichTextBox的内容) 因此,我希望View能够像ViewModel一样监听(ea)事件,以便可以根据请求提供该数据。
我的想法如下:
要么:我可以使用
or:是否可以通过编程方式在仍然保持松散耦合的同时(也许在Bootstrapper中)进行编程,如果可以的话,如何将它们绑定在一起?
还是我完全想不到的另一种选择?