2014-02-26 98 views
0

我是WPF的新手,並將它拼湊在一起,但我有一個屬性更改事件附加到字段,我正在使用它來了解什麼情況發生了更改,關閉這些事件是他們知道價值是否已經改變的一種方式,然後與原始價值和來回不同,現在我有一個默認值的集合,我正在檢查以知道是什麼改變了,還有當我必須重新分配屬性事件不斷被觸發的默認值屬性更改事件WPF原始更改

+0

你是在談論公共財產與b在公共屬性中使用Raise或OnPropertyChanged來確定私有字段?或者你是否在討論通過xaml連接的屬性更改事件處理程序? – Josh

+0

一種模糊的問題tbh沒有看到實際的代碼。調用屬性更改(對於INPC)沒有支持值更改通常是不好的,因爲如果它被綁定,這將在UI中觸發不需要的刷新(在大多數情況下)。因此,在MVVM和VM的幾乎所有屬性(如果它們觸發INPC事件)中,該屬性可能已更改。但是,如果沒有看到代碼,這些都不是保證,你可能會遇到一些情況,即使值沒有改變,你也想觸發屬性改變。 – Viv

+0

我在談論公共財產使用提高和onProperty變化,是他們的方式有默認值,並知道如果某些情況下有所改變,然後改回原來的 – AC25

回答

0

通常會有這些公共屬性的後備專用字段,您在其中調用了Raise或OnPropertyChanged(但是您這樣做)。在設置之前,您通常可以將傳入的「值」與後臺字段進行比較。因此,任何類型的傳入值與字段在設置之前的值的比較都可以在屬性設置器中完成。 像這樣

private bool bMyBool; 
public bool MyBool 
{ 
    get 
    { 
     return bMyBool; 
    } 
    set 
    { 
     // Can do comparison here 
     // if (value == bMyBool) 
     //  DoSomething 
     bMyBool = value; 
     OnPropertyChanged("MyBool"); // Or some type on property changed notification 
    } 
} 
0

如果你不希望改變的值那麼就消除了獲得

private string myValue = "default"; 
public string MyValue; 
{ 
    get { return myValue; } 
    set 
    { 
     if (myValue == value) return; 
     myValue = value; 
     NotifyPropertyChanged(MyValue); 
    } 
} 

如果你想改變的價值,但不NotifyPropertyChanged,那麼你可以指定

myValue = "no notitfy"; 

很少有人想這樣做