C# 从MainViewModel调用或发送值到其他ViewModels mvvm mvvm light

C# 从MainViewModel调用或发送值到其他ViewModels mvvm mvvm light,c#,wpf,mvvm,mvvm-light,C#,Wpf,Mvvm,Mvvm Light,我们正在使用mvvm light框架构建我们的应用程序。在ViewModel文件夹中,根据应用程序的不同功能,我们有许多ViewModel文件,如orderSupplyViewModel、HouseholdSupplyViewModel等。通过将MainViewModel设置为分部类,我们已将所有这些ViewModel包含在MainViewModel中。所以你可以说我们有一个主视图模型。现在我们已经完成了40%的应用程序,我们需要将视图模型作为一个部分类进行分离。因此,我们可以从mainview

我们正在使用mvvm light框架构建我们的应用程序。在ViewModel文件夹中,根据应用程序的不同功能,我们有许多ViewModel文件,如orderSupplyViewModel、HouseholdSupplyViewModel等。通过将MainViewModel设置为分部类,我们已将所有这些ViewModel包含在MainViewModel中。所以你可以说我们有一个主视图模型。现在我们已经完成了40%的应用程序,我们需要将视图模型作为一个部分类进行分离。因此,我们可以从mainviewModel调用不同的ViewModel。怎么办?以下是与名为-OrderSuppliesViewModel的视图模型相关的代码

namespace ParentalHealthClient.ViewModel
{
    /// <summary>
    /// This class contains properties that a View can data bind to.
    /// <para>
    /// </summary>
    public partial class MainViewModel : ViewModelBase
    {
        private List<UserMedicalSupplyBO> _selectedFavouriteMedicalItems;
        private List<HouseholdItemsBO> _selectedFavouriteHouseHoldItems;
        private List<OrderSuppliesBO> _selectedOrderItems;
        private HouseholdSuppliesDAO _dataAccessForOrder;

        /// <summary>
        /// Initializes a new instance of the OrderSuppliesViewModel class.
        /// </summary>
        public void OrderSuppliesViewModel()
        {


        }

MVVM Light toolkit提供了messenger类,以解耦的方式进行通信。 它还可以启动对话框并提供回调。非常方便,非常轻,非常有用


此处介绍了Messenger:

您不应该有一堆MainViewModel部分定义。您应该为每种类型的ViewModel创建单独的ViewModel类


在Visual Studio的解决方案资源管理器中,右键单击[ViewModel]文件夹->添加->新建项…->Mvvm灯光视图模型。这将添加一个继承ViewModelBase的新ViewModel类。

谢谢。但是我们需要分离不同的viewmodel,因为它们都是一个viewmodel,即使用分部类的MainViewModel。好心的建议?我不太明白。为什么不使用或ViewModelBase类并继承公共行为。那你就不需要分部类了?或者你的意思是不同的。。。