• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C#中WPF依赖属性的正确学习方法

c# 搞代码 4年前 (2022-01-09) 11次浏览 已收录 0个评论

前言

我在学习WPF的早期,对依赖属性理解一直都非常的不到位,其恶果就是,我每次在写依赖属性的时候,需要翻过去的代码来复制黏贴。

相信很多朋友有着和我相同的经历,所以这篇文章希望能帮助到那些刚刚开始学依赖属性的朋友。

那些[讨厌]的依赖属性的讲解文章

初学者肯定会面临一件事,就是百度,谷歌,或者MSDN来查看依赖属性的定义和使用,而这些文章虽然都写的很好,但,那是相对于已经学会使用依赖属性的朋友而言。

而对于初学者而言,说是误导都不过分。

比如,官网的这篇文章https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/advanced/dependency-properties-overview

介绍依赖属性是这样。

public static readonly DependencyProperty IsSpinningProperty =
  DependencyProperty.Register(
  "IsSpinning", typeof(Boolean),
  typeof(MyCode)
  );
public bool IsSpinning
{
  get { return (bool)GetValue(IsSpinningProperty); }
  set { SetValue(IsSpinningProperty, value); }
}

他做了一个定义,然后告诉你,依赖属性的定义格式如此。

如果你是个初学者,你想不疑惑都很难。因为没人能把这种定义给背下来。

其结果就是,你要和我当初一样,每次定义依赖属性,都要去复制黏贴。但这并不是最大的恶果,最大的恶果是,因为太过复杂的定义,让你放弃了对他理解,就记住了依赖属性要复制黏贴,从而导致了,你丧失了对依赖属性灵活运用的能力。

正确的理解依赖属性

如何正确的理解依赖属性呢?

很简单,拆分一下就可以理解了。

现在我们来拆分依赖属性,首先拆分他的定义,将依赖和属性拆分。

我们先看属性,如下,我们定义了一个属性。

private bool _IsSpinning;
public bool IsSpinning
{
  get { return _IsSpinning; }
  set { _IsSpinning = value; }
}

然后我们使用DependencyProperty类定义一个对象,这个对象将作为IsSpinning属性的依赖,如下:

public static readonly DependencyProperty IsSpinningProperty

然后,我们在将这个依赖对象,注册到属性IsSpinning的所在类上,如下:

DependencyProperty.Register( "IsSpinning", typeof(bool), typeof(你的属性所在的类的名称));

从注册代码中,我们可以看到,他注册了三个信息:

1,当前DependencyProperty类定义的对象IsSpinningProperty,依赖于属性IsSpinning。

2

本文来源gao!%daima.com搞$代*!码网1

,对象IsSpinningProperty的依赖类型与属性IsSpinning的类型一样都是bool。

3,对象IsSpinningProperty注册的类是声明属性IsSpinning的类,即,在其他类里,将看不到该依赖对象。

现在,我们做最后的操作,修改属性,将依赖对象IsSpinningProperty与属性IsSpinning绑定。

如何绑定呢?很简单,将我们属性定义里的【private bool _IsSpinning】替换为我们刚刚定义的依赖【IsSpinningProperty】即可。

public bool IsSpinning
{
  get { return (bool)GetValue(IsSpinningProperty); }
  set { SetValue(IsSpinningProperty, value); }
}

这里我们看到了,在给属性赋值和取值时,用到了GetValue和SetValue,他们俩是哪来的呢?


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C#中WPF依赖属性的正确学习方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址