2010-05-29 85 views
1

我正在使用wpf及其C語言!何時需要使用自動屬性以及何時使用propertychanged事件?

我有這個在我的Animal.cs CLAS

private string _animalName; 

    public string AnimalName 
    { 
     get { return _animalName; } 
     set 
     { 
      if(_animalName!= value) 
      { 
       _animalName= value; 
       this.NotifyPropertyChanged("AnimalName"); 
      } 
     } 
    } 

我也可以這樣寫:

公共字符串AnimalName {獲取;集;}

有綁定和驗證無差異。當我交換代碼時,所有東西都像以前一樣工作。

這是由於我只創建新的動物,但我不允許更新我的應用程序中的動物名稱這一事實?

所以我需要調用propertyChanged(「AnimalName」);只有當我想改變它的屬性值?

我是C#初學者;)

回答

1

如果你的對象有一個將被綁定到控件,那麼你需要確保通過讓任何更改該屬性的綁定控件瞭解一個更新的屬性(setter方法) INotifyPropertyChanged的。但是,如果您有隻讀屬性和/或不會在數據綁定方案中使用的屬性,則不必在該屬性的setter中實現或調用NotifyPropertyChanged方法,在這種情況下,您可以使用自動屬性。

+0

嗯,我有一個二傳手,因爲我第一次輸入一個動物的名字,當我創建動物類。但是在這個過程之後,我不必再改變這個地產了! 我只是切換屬性,它沒有NotifyPropertyChanged工作,雖然我用你說的一個setter,那麼是什麼? – Honey 2010-05-29 10:24:05

+0

如果一旦創建了一個動物類的實例,動物的名字就不會改變,那麼可以讓動物構造函數爲該名稱取一個參數。您在構造函數中設置名稱,並通過移除setter將name屬性設爲只讀。它將工作,不管NotifyPropertyChanged。但是,假設你擁有一個可以改變的動物所有者的財產。綁定並顯示所有者信息仍然可以在沒有NotifyProperty的情況下運行。但是,如果所有者發生更改,則不會顯示NotifyPropertyChanged中最新的信息。 – 2010-05-29 10:39:06

+0

你說的是Owner.cs和Animal.cs關係嗎? 當我讀到你說的話時,我不明白什麼,同時我也認爲在我身邊發生了什麼。 我使用自動道具只與get; set和一切按預期工作。我只是不希望在幾個月後有一些缺點...... – Honey 2010-05-29 10:55:14

相關問題