2016-11-17 169 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

回答

相關問題