我在一个控件上有一个依赖属性,它是一个自定义类。
现在有没有在值被改变之前触发的事件?
我知道OnPropertyChanged是在属性已经更改后触发的。
我需要一些在之前触发的事件,以便我可以取消更改......以保留控件的状态。
我不能将依赖属性设置回其旧值,因为这意味着我会失去控件的状态。
谢谢!
我在一个控件上有一个依赖属性,它是一个自定义类。
现在有没有在值被改变之前触发的事件?
我知道OnPropertyChanged是在属性已经更改后触发的。
我需要一些在之前触发的事件,以便我可以取消更改......以保留控件的状态。
我不能将依赖属性设置回其旧值,因为这意味着我会失去控件的状态。
谢谢!
如果是你的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
});
public Color CustomColor
{
get { return GetValue(CustomColorProperty) as Color;}
set
{
//check value before setting
SetValue(CustomColorProperty, value);
}
}
同时,PropertyChangedCallback、ValidateValueCallback、CoerceValueCallback 这些委托对您也会很有帮助。