将数据从视图传递到viewmodel

时间:2014-04-04 08:43:38

标签: wpf mvvm

我想将视图构造函数中的数据传递给视图模型 这是我的视图,它有一个IEnumerable类型参数

    public SearchView(IEnumerable<ISearchable> enumerable)
    {
        InitializeComponent();
    }

我希望在视图模型中使用相同的可枚举对象

    public  SearchViewModel() 
     {
      SearchCommand = new RelayCommand(TestSearch);
     } 

我怎样才能实现这一点。任何帮助都会得到很高的评价。

1 个答案:

答案 0 :(得分:0)

当您加载视图时,确实可以这样做。看看我的伪代码:

   dependency property of type object objProperty = null;

   private object tempObj;

   public MyWindow(object param) : base()
   {
      tempObj = param;

      // create one way to source Binding
      Binding b = new Binding("DataContext.ViewModelProperty");
      b.Source = this;
      b.Mode = BindingMode.OneWayToSource;
      this.SetBinding(b, objProperty);

      // listen to DataContext changes
      this.DataContextChanged += OnDataContextChanged
   }

   private void OnDataContextChanged(...)
   {
       // push data to ViewModel 
       this.SetCurrentValue(objProperty, tempObj);
   }

这是允许从View到ViewModel的数据的方法。

每次DataContext或更好的表示ViewModel更改,您将通过绑定到源来推送您的值。