静态属性在WPF中调用非静态方法

时间:2016-11-17 02:12:45

标签: c# wpf mvvm-light

我有多个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;
   }
}

1 个答案:

答案 0 :(得分:0)

ParentVM创建一个ChildVM,通过ChildVM属性公开它 ParentView处理生成的PropertyChanged事件,创建一个ChildView,将其DataContext设置为ChildVM。

请参阅here for details.

use MVVM Light Toolkit's Messaging Services to pass values to view Models.。但我不喜欢它。