依赖属性和附加属性

依赖属性是WPF中支持数据绑定的基础,所有的绑定属性都基于DependencyProperty注册。文中展示了如何注册和使用依赖属性,如`NameProperty`,以及其与CLR属性的关联。附加属性是另一种形式的依赖属性,常用于公共功能,如`IsRotateProperty`的示例,它们可以通过GetIsRotate和SetIsRotate方法访问和设置。
摘要由CSDN通过智能技术生成

依赖属性定义:

在WPF当中, 所有支持绑定的属性本质上它都是封装后的依赖属性。
那么也就是说, 只有依赖属性才可以进行绑定。通过DependencyProperty类的静态Register方法注册, 如下所示:

class Student : DependencyObject
{
 
 public string Name 
 { 
  get { return (string)GetValue(NameProperty); } //依赖属性和附加属性定义的不同
  set{ SetValue(NameProperty, value); }
 }

   public static readonly DependencyProperty NameProperty =         DependencyProperty.Register("Name", typeof(string), typeof(Student));
 }

  • 第一个参数为string类型,表示指明以哪个CLR属性作为这个依赖属性的包装器。就是代码
public string Name
        {
            get { return (string)GetValue(NameProperty); }
            set { SetValue(NameProperty, value); }
        }
  • 第二个参数指明此依赖属性用来存储什么样的值。
  • 第三个参数用来指明此依赖属性的宿主是什么类型,或者说DependencyProperty.Register方法要将这个依赖属性注册到哪个类型上。加

附加属性定义: 

附加属性也是依赖属性, 只是它的注册方式与表达方式略有不同 ,一般作为公共使用,如下所示

 public static bool GetIsRotate(DependencyObject obj)
{
     return (bool)obj.GetValue(IsRotateProperty);
}
  
public static void SetIsRotate(DependencyObject obj, bool value)
 {
      obj.SetValue(IsRotateProperty, value);
 }
public static readonly DependencyProperty MyPropertyProperty =
          DependencyProperty.RegisterAttached("MyProperty", typeof(int), typeof(ownerclass), new PropertyMetadata(0));
  • 参数一(IsRotate):要注册的附加属性的名称。

  • 参数二(typeof(bool)):声明属性IsRotate的类型是bool。

  • 参数三(typeof(YMDemo)):依赖属性IsRotate的所有者类型,即定义该附加属性的类是YMDemo。

  • 参数四的类型是PropertyMetadata

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值