2016-11-17 135 views
0

我有多个ViewModel,并使用ViewModelBase作为其中的所有抽象类。我想从另一个类的一个类中获取当前属性值。创建一个实例是不可取的,使得这个属性成为我想要的。但是,通过这样做,我使用ViewModelBase.Set()就失去了INotifyPropertyChange Im,因为Set()是一个非静态方法。静态属性调用WPF中的非静态方法

什么是替代方案,我可以获得属性值,但仍然保留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

请勿使用静态属性。你有主ViewModel吗? – Bigeyes

+0

@EmrahSüngü通过创建实例变量,我错过了当前数据,因为它已被设置。如果有一种方法可以引用这个实例,它会得到我想要的。 – GET1NE

回答

相关问题