松散耦合的MVVM视图中的依赖注入

时间:2020-08-25 15:43:09

标签: c# wpf mvvm dependency-injection

我的应用松耦合,并使用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)事件,以便可以根据请求提供该数据。

我的想法如下:

要么:我可以使用 xaml将ViewModel的(ea)属性注入视图吗?

or:是否可以通过编程方式在仍然保持松散耦合的同时(也许在Bootstrapper中)进行编程,如果可以的话,如何将它们绑定在一起?

还是我完全想不到的另一种选择?

0 个答案:

没有答案