强制回调
通过FrameworkPropertyMetadata对象使用CoerceValueCallback回调函数。
FrameworkPropertyMetadata metadata=new FrameworkPropertyMetadata();
metadata.CoerceValueCallback=new CoerceValueCallback(CoerceMaximum);
DependencyProperty.Register("Maximum",typeof(double),typeof(RangeBase),metadata);
CoerceValueCallback传递两个参数——准备使用的数值和数值将要应用的对象
ScrollBar bar=new ScrollBar();
bar.value=100;
bar.Minimum=1;
bar.Maximum=200;
首次创建ScrollBar控件时,Value属性的值为0,Minimum属性的值为0,二Maximum属性的值为1.
执行完上面代码中的第二行后,Value属性被强制为1,因为最初Maximum属性被设置为默认值1.但是当到达第四行时,会发生一些值得注意的事情。当Maximum属性被改变后,他会触发对Minimum和Value属性的强制。这一强制作用于最初设定的值。换句话说,WPF依赖项属性系统依然保存了本地值100,并且现在该数值是可以接受的,它可以被应用到Value属性。