silverlight - MVVM : how to pass parameter to ViewModel's constructor

标签 silverlight mvvm viewmodel mvvm-light service-locator

我正在使用 L. Bugnion 的 MVVM Light Framework。
将客户 ID 等参数传递给 ViewModel 的构造函数的推荐方法有哪些?

编辑:
每个 ViewModel 我需要的参数不是跨模型共享的。它对每个 View 模型实例都是独一无二的。

最佳答案

//Create a container class to pass via messenger service
    public class CarSelectedArgs
    {
      #region Declarations

      public Car Car { get; set; }

      #endregion

      #region Constructor

      public CarSelectedArgs(Car car)
      {
        Car = car;
      }

      #endregion
    }


    //example of view model sending message.
    public class SendingViewModel : ViewModelBase
    {
      private Car _car;
      public Car SelectedCar
      {
        get { return _car; }
        set
        {
          _car = value;
          if (value != null)
          {
            //messenger will notify all classes that have registered for a message of this type
            Messenger.Default.Send(new CarSelectedArgs(value));
          }
        }
      }
    }


    //Example of ViewModel registering to recieve a message
    public class SampleViewModel : ViewModelBase
    {
      #region Constructor

      public SampleViewModel()
      {
        Messenger.Default.Register<CarSelectedArgs>(this, OnCarSelected);
      }
      #endregion

      #region LocalMethods

      void OnCarSelected(CarSelectedArgs e)
      {

        var NewCar = e.Car;
      }

      #endregion
    }

关于silverlight - MVVM : how to pass parameter to ViewModel's constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122074/

相关文章:

c# - 使用 MVVM 在组合框中设置默认值

c# - 如何在 MVVM 模式中正确实现模型和 View 模型

wpf - 使用触发器更改 XAML 映射图钉的背景颜色

c# - 尝试将数据绑定(bind)从 MainWindow.xaml.cs 移动到另一个 ViewModel 模块

android - 建议在 View 模型 android kotlin 的实时数据中使用 getter 或 equals

android - ViewModel Observer 第一个参数是 require Lifecycleowner

c# - 在 Silverlight 应用程序中存储 ADO.NET 数据服务 URL 的最佳位置是什么?

c# - 在整个 Silverlight C# 项目中使用常量字符串的正确方法是什么?

wpf - 适用于WPF用户的Silverlight(4.0)

silverlight - 如何在Enter键上激活按钮的Click命令?