简介:

DependencyObject 类表示参与依赖属性系统的对象。属性系统的主要功能是计算属性的值,并提供有关已更改的值的系统通知。 参与属性系统的另一个类 DependencyProperty。 DependencyProperty 允许将依赖属性注册到属性系统,并提供有关每个依赖属性的标识和信息,而 DependencyObject 为基类,使对象能够使用此依赖属性。

INotifyPropertyChanged 类用于通知UI刷新,注重的仅仅是数据更新后的通知。DependencyObject 类用于给UI添加依赖和附加属性,注重数据与UI的关联。如果简单的数据通知,两者都可以实现的。

介绍:

  1. 依赖属性。 通过调用 Register 方法,并将该方法的返回值存储为类中的公共静态字段,来注册依赖属性。
  2. 附加属性。 通过调用 RegisterAttached 方法,并将该方法的返回值存储为类中的公共静态只读字段,来注册附加属性。
  3. 获取、设置和清除 DependencyObject上存在的任何依赖项属性的值的实用工具方法。
  4. 元数据、强制值支持、属性更改通知和替代依赖属性或附加属性的回调。 此外,DependencyObject 类简化了依赖属性的每个所有者的属性元数据。
  5. 是 ContentElement、Freezable或 Visual派生类的基类。

使用:

通过TextBox的Text数据改变TextBlock的字体。

输入“propdp”,按“Tab”键会自动生成。

    public class PersonDP : DependencyObject{public int MyFont{get { return (int)GetValue(MyFontProperty); }set { SetValue(MyFontProperty, value); }}// Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...public static readonly DependencyProperty MyFontProperty =DependencyProperty.Register("MyFont", typeof(int), typeof(PersonDP),new PropertyMetadata((int)20,new PropertyChangedCallback(OnValueChanged),new CoerceValueCallback(OnValueCallback)),new ValidateValueCallback(OnValidateValue));//首先数据验证private static bool OnValidateValue(object value){return (int)value != 0;}//其次数据改变private static object OnValueCallback(DependencyObject d, object baseValue){if((int)baseValue > 200) { baseValue = 200; }return baseValue;}//最后数据回调private static void OnValueChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e){MessageBox.Show("Font Size: " + e.NewValue.ToString());}}
    <Window.Resources><local:PersonDP x:Key="p"></local:PersonDP></Window.Resources><Grid><StackPanel><TextBox x:Name="tbx" Text="{Binding Source={StaticResource p},Path=MyFont,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox><TextBlock Text="{Binding ElementName=tbx,Path=Text}" FontSize="{Binding ElementName=tbx,Path=Text}" ></TextBlock></StackPanel></Grid>

结果:

WPF DependencyObject相关推荐

  1. 浅谈WPF的VisualBrush

    原文:浅谈WPF的VisualBrush 首先看看VisualBrush的解释,msdn上面的解释是使用 Visual 绘制区域,那么我们再来看看什么是Visual呢?官方的解释是:获取或设置画笔的内 ...

  2. WPF查找子控件和父控件方法

    原文:WPF查找子控件和父控件方法 public List<T> GetChildObjects<T>(DependencyObject obj, string name) w ...

  3. 【WPF】一个简单的ColorPicker控件

    在斯克迪亚看到一篇WPF动态改变主题颜色的文章,来了兴趣,于是自己搞了个简单的ColorPicker控件. 控件其实很简单,定义了5个依赖属性 FinalBrushProperty, APropert ...

  4. 为WPF和Silverlight的Grid添加边框线(zz)

    Grid是WPF和Silverlight中的一个重要的布局元素,其他的布局元素还有StackPanel, Canvas, Border等等.从字面上说,Grid是一个表格的意思,它的使用也确实很方便, ...

  5. WPF自定义空心文字

    原文:WPF自定义空心文字 首先创建一个自定义控件,继承自FrameworkElement,"Generic.xaml"中可以不添加样式. 要自定义空心文字,要用到绘制格式化文本F ...

  6. WPF MvvmLight简单实例(1) 页面导航

    原文:WPF MvvmLight简单实例(1) 页面导航 实现了那些功能,先看看截图: 操作描述: 在程序运行后,点击"Load"按钮,页面会加载PageOne,点击PageOne ...

  7. 2000条你应知的WPF小姿势 基础篇45-50 Visual TreeLogic Tree 附带两个小工具

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2, ...

  8. WPF 带水印的密码输入框实现

    WPF 带水印的密码输入框实现 原文:WPF 带水印的密码输入框实现 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/articl ...

  9. Prism for WPF初探(构建简单的模块化开发框架)

    先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to help you more easily design and build, flexibl ...

最新文章

  1. 研究院引进:博士70万;硕士40万
  2. 谷歌“升维打击”:还原任意角度光照立体效果,2D变“4D”!
  3. 系统调研450篇文献,微软亚洲研究院推出超详尽语音合成综述
  4. Java Web中的中文编码
  5. 【分享】电子科大第一位以第一作者在CVPR上发文的本科生,这个小哥哥用奋斗诠释优秀!...
  6. 使用wsimport构建WebService客户端
  7. 模糊综合评价在matlab上的实现
  8. Android 手机锁屏解锁后Activity走了onDestroy
  9. 齐次线性方程组系数矩阵的秩与解集的秩
  10. 职等你来 | UE/UX交互设计师(15k);时钟AE工程师;数字IC验证工程师(薪资开放)
  11. wifi6 feature 详解
  12. 数据标注软件 【labelimg】
  13. 苹果Home键恢复(无工具篇)
  14. 虚幻4学习的方法和途径
  15. 【纪中受难记】——Day21:调整心态
  16. 电脑上最好的3个小说阅读器
  17. 鸿蒙华为5G老总是任正非吗,微信迟迟不用“鸿蒙”,华为难道不着急吗?任正非:5G不是摆设...
  18. odoo13动作里添加向导
  19. solidworks2018已停止工作_关于SolidWorks安装出现错误以及解决办法
  20. 易语言隔行扫描算法 支持库

热门文章

  1. 《Activiti/Flowable 深入BPM工作流》- BPM任务如何关联businessKey?
  2. conflicts with file from package epel-release-6-8.noarch
  3. 一文帮你看懂集线器、交换机、路由器的区别
  4. TCP收到RST的几种情况
  5. 如何学习IPv6安全
  6. python第8周 作业
  7. 科技创新赋能金融转型,巨杉数据库与赞同科技完成产品互认证
  8. PC市场份额快速回升,荣耀欲挑战苹果华为?
  9. Office10和mathType
  10. 物联网空开价格_智慧物联网远程空开断路器