附加的依赖项属性
附加属性是一种依赖项属性,有WPF属性系统管理,不同之处在于附加属性被应用到的类并非定义附加属性的那个类
为了定义附加属性,需要使用RegisterAttached()方法,而不是使用Register()方法。
FrameworkPropertyMetadata metadata=new FrameworkPropertyMetadata(0,new PropertyChangedCallback(Grid.OncellAttachedPropertyChanged));
Grid.RowProperty=DependencyProperty.RegisterAttached("Row",typeof(int),typeof(Gird),metadata,new ValidataValueCallback(Grid.IsIntValueNotNegative));
当创建附加属性时,不必定义.Net属性封装器。副驾驶寻根需要调用两个静态方法来设置和获取,SetValue()和GetValue(),继承自DependencyObject
public static int GetRow(UIElement element)
{
if(element==null)
{
throw new ArgumentNullException();
}
return (int element.GetValue(Grid.RowProperty));
}
public static VOID SetRow(UIElement element,int value)
{
if(element==null)
{
throw new ArgumentNullException();
}
element.SetValue(Grid.RowProperty,value);
}
下面示例使用代码将元素放在Grid第一行
Grid.SetRow(txtElement,0);
也可以直接调用SetValue()或者GetValue,从而绕过这两个静态方法
txtElement.SetValue(Gird.RowProperty,0);