您的位置:首页 > 运维架构

#123 – Coercing a Dependency Property(强制转换依赖属性的值)

2016-06-28 11:10 489 查看
原文地址:

https://wpf.2000things.com/2010/11/12/123-coercing-a-dependency-property/

在一个类中使用依赖属性的时候,可以选择在注册该依赖属性的时候指定一个强制转换回调函数(coercion callback)。当属性将要返回一个属性值的时候该回调函数被调用。通过强制转换回调函数可以强制改变依赖属性的值。

在注册依赖属性的时候,通过CoerceValueCallback 委托指定强制转回调函数

PropertyMetadata ageMetadata =
new PropertyMetadata(
18,     // Default value
new PropertyChangedCallback(OnAgeChanged),
new CoerceValueCallback(OnAgeCoerceValue));    // ** 运行类对依赖属性值进行强制转换

// Register the property
AgeProperty =
DependencyProperty.Register(
"Age",                 // Property's name
typeof(int),           // Property's type
typeof(Person),        // Defining class' type
ageMetadata,           // Defines default value & changed/coercion callbacks  (optional)
new ValidateValueCallback(OnAgeValidateValue));   // validation (optional)

通过强制转换设置属性值的最大和最小范围

private static object OnAgeCoerceValue
(DependencyObject depObj, object baseValue)
{
int coercedValue = (int)baseValue;

if ((int)baseValue > 120)
coercedValue = 120;

if ((int)baseValue < 1)
coercedValue = 1;

return coercedValue;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WPF