2010-07-28 3 views
1

У меня есть свойство зависимости на элементе управления, который является настраиваемым классом.wpf Зависимость свойства перед изменением события?

Теперь есть событие, которое поднимается до того, как значение меняется?

Я знаю, что OnPropertyChanged возникает после того, как свойство уже изменилось.

Мне нужно какое-то событие раньше, чтобы я мог отменить изменение ...., чтобы сохранить состояние элемента управления.

Я не могу вернуть свойство зависимостей обратно к его старому значению, поскольку это будет означать, что я теряю состояние в элементе управления.

Спасибо!

ответ

5

Если его ваша DependencyProperty, вы можете использовать ValidateValueCallback для проверки входящего значения и отклонить его, если его не так как вы хотите.

В следующем примере, только значения больше 0 будут приняты:

public int Test { 
    get { return (int)GetValue(TestProperty); } 
    set { SetValue(TestProperty, value); } 
} 


public static readonly DependencyProperty TestProperty = 
    DependencyProperty.Register("Test", typeof(int), typeof(YourClass), 
    new UIPropertyMetadata(0), delegate(object v) { 
     return ((int)v) > 0; // Here you can check the value set to the dp 
    }); 
1

Если ваши объекты данных реализуют INotifyPropertyChanging, вы можете обработать событие PropertyChanging, которое возникает до изменения значения свойства.

INotifyPropertyChanging был введен в .NET 3.5

+0

Спасибо за все ответы ребята! – guest

-1

Вы можете проверить значение свойства в объявлении набора свойств раздела. Предположим, что мы имеем CustomColor DEP свойство:

public Color CustomColor 
{ 
    get { return GetValue(CustomColorProperty) as Color;} 

    set 
    { 
     //check value before setting 
     SetValue(CustomColorProperty, value); 
    } 
} 

Также будет полезно для вас PropertyChangedCallback, ValidateValueCallback, CoerceValueCallback делегатов.

+6

Не рекомендуется иметь какую-либо логику внутри getter/setter для свойства зависимости, потому что механизм привязки фактически не использует их. – HaxElit

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