如何在另一个ViewModel中访问ViewModel属性(值)?

时间:2012-11-19 10:15:25

标签: wpf visual-studio-2010 c#-4.0 mvvm

我有一个像这样的ViewModel:

public class TaskTrayViewModel<T> : ViewModelBase where T : IBlotterRow, new()
{ }

此ViewModel包含一个属性:

private Product sp;
public Product selectedProduct
{
   get { return sp; }
   set
   {
    sp = value; 
   }

}

我想在BlotterCriteriaViewModel(其他viewModel)中访问此属性(值)。所有视图模型都实现了InotiFyPropertyChange。我已经阅读了一些相关的问题,但没有得到任何东西。我没有使用框架(prism,galasoft)?

如何在这里传递属性(值)?请建议&gt;

1 个答案:

答案 0 :(得分:1)

好的,至少有两种方式。

  1. 直接方式:BlotterCriteriaViewModel的实例获取对TaskTrayViewModel实例的引用(在构造时,或者可能在需要值的位置)。拥有TaskTrayViewModel引用,可以轻松访问公共属性。
  2. 间接方式:BlotterCriteriaViewModel的实例从INotifyPropertyChange获取TaskTrayViewModel引用并订阅PropertyChanged事件。您将无法获得该属性的初始值,但只要该属性发生更改,您就会获得该事件并可以在事件args中看到新值。
  3. 其中任何一个都有问题吗?