依赖属性中,验证过程需要添加在register的第四参数中,举例如下
public class Student : DependencyObject
{
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
// Using a DependencyProperty as the backing store for Name. This enables animation, styling, binding, etc...
/// <summary>
/// 创建一个PropertyMetadata对象,
/// 参数1=默认值(未赋值时的默认值)
/// 参数2=以来属性的值被改变之后此委托会被调用,可关联一个影响函数
/// 参数3=依赖属性值被强制更改后被调用,此属性克关联一个影响函数
/// </summary>
public static PropertyMetadata metadata = new PropertyMetadata("元数据", propertyChangedCallback, coerceValueCallback);
private static void propertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
private static object coerceValueCallback(DependencyObject d, object baseValue)
{
//验证值
if (baseValue.Equals("a"))
{
return baseValue;
}
else
{
return null;
}
}
//注册依赖属性
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(Student), metadata);
}