2012-04-26 2 views
2

Я создал 1 enum , когда я использую его как свойство для пользовательского элемента управления, я хочу запустить событие для изменения свойства enum. Пожалуйста, помогите.Как получить событие изменения значения enum?

+1

Как вы считаете, что перечисление конкретных здесь? Вы знаете, как обрабатывать изменения в свойствах, отличных от enum? Вы пытались использовать один и тот же подход для свойства enum? –

+0

Я создал квадратный элемент управления. Он имеет перечисление как свойство. Перечисление объявлено в App.xaml.cs, и я хочу получить событие, когда свойство enum этого конкретного экземпляра изменится. – vaibhav

+0

Это на самом деле не отвечало ни на один из моих вопросов ... –

ответ

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

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

Смежные вопросы