我有多个ViewModel并使用ViewModelBase作为所有这些中的抽象类。我想从另一个类中获取当前属性值。创建一个实例是不可取的,使属性静态得到我想要的东西。但是,通过这样做,我失去了使用ViewModelBase.Set()的INotifyPropertyChange Im,因为Set()是一个非静态方法。
什么是我可以获得属性值的替代方案,但仍然保留ViewModelBase在MVVM中的好处?
public class SampleViewModel : ViewModelBase
{
private static bool _sample;
public SampleViewModel()
{
}
public static bool GetValue
{
get { return _sample; }
set { Set(ref _sample, value); }
}
}
public class MyClassViewModel : ViewModelBase
{
public MyClassViewModel()
{
bool myValue = SampleViewModel.GetValue;
}
}
答案 0 :(得分:0)
ParentVM创建一个ChildVM,通过ChildVM属性公开它 ParentView处理生成的PropertyChanged事件,创建一个ChildView,将其DataContext设置为ChildVM。
或use MVVM Light Toolkit's Messaging Services to pass values to view Models.。但我不喜欢它。