【发布时间】:2016-11-17 02:12:45
【问题描述】:
我有多个 ViewModel 并在所有这些中使用 ViewModelBase 作为抽象类。我想从另一个类中获取当前属性值。创建一个实例是不可取的,使属性静态得到我想要的。但是,这样做我失去了 INotifyPropertyChange Im 与 ViewModelBase.Set() 一起使用,因为 Set() 是一种非静态方法。
有什么替代方法可以让我获得属性值,但仍然可以在 MVVM 中保留 ViewModelBase 的好处?
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;
}
}
【问题讨论】:
-
为什么不想创建实例变量?静态意味着它与实例没有任何关系。您的静态属性与您的实例完全无关吗?如果是这样,您的设计存在缺陷,因为设置为静态
-
不要使用静态属性。你有主 ViewModel 吗?
-
@EmrahSüngü 通过创建实例变量,我错过了当前数据,因为它已经设置好了。如果有办法引用该实例,它将得到我想要的。
-
@Bigeyes 我有一个主视图模型
-
如果已经设置了,那为什么不把已经设置的数据传递给你的实例变量呢?
标签: c# wpf mvvm-light