2012-04-26 53 views
2

我創建了1枚舉 當我用它作爲一個自定義控件的屬性時,我想引發一個事件來改變枚舉屬性。請幫助。如何獲取枚舉值的變化事件?

+1

做什麼,你認爲是枚舉具體位置?你知道如何處理對非枚舉屬性的更改嗎?你有沒有嘗試使用相同的方法來枚舉屬性? – 2012-04-26 10:01:42

+0

我創建了一個方形控件。它具有enum作爲屬性。枚舉在App.xaml.cs中聲明,並且當該特定實例的枚舉屬性發生更改時,我想獲得一個事件。 – vaibhav 2012-04-26 10:04:58

+0

這實際上並沒有回答我的任何問題... – 2012-04-26 10:11:37

回答

4

利用setter來調用函數或調用事件代理。

public enum PersonName 
    { 
     Eric, 
     George, 
     David, 
     Frank 
    } 

    private PersonName myPersonName 

    public PersonName MyPersonName 
    { 
     get { return myPersonName; } 
     set 
     { 
      myPersonName = value; 
      //simply call what you want done 
      PersonNamePropertyChanged(); 
     } 
    } 

詳見這裏http://msdn.microsoft.com/en-us/library/ms743695.aspx 它是使用INotifyPropertyChanged的

+0

非常感謝,這工作! – vaibhav 2012-04-26 10:12:51

5

一個psudocode

定義委託

public void delegate EnumPropertyChangedDelegate(object sender, Enum newValue); 

定義事件

public event EnumPropertyChangedDelegate EnumPropertyChanged; 

,並在你的財產

private MyEnum myEnum = .... some value 
public MyEnum EnumProperty 
{ 
    get {return myEnum;} 

    set { 
     if(value != myEnum) 
     { 
      myEnum = value; 
      if(EnumPropertyChanged!=null) 
       EnumPropertyChanged(this, myEnum); 
     } 
    } 


} 
+0

@chirag:在你有財產的階級。因此,只要有人改變該財產,該類的消費者就必須訂閱該事件並接收通知。 – Tigran 2012-04-26 10:11:01