我有多個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;
}
}
爲什麼你不想創建一個實例變量?靜態意味着它與實例沒有任何關係。你的靜態屬性與你的實例根本沒有關係?如果是,您的設計有缺陷,設置爲靜態 –
請勿使用靜態屬性。你有主ViewModel嗎? – Bigeyes
@EmrahSüngü通過創建實例變量,我錯過了當前數據,因爲它已被設置。如果有一種方法可以引用這個實例,它會得到我想要的。 – GET1NE