ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WPF 精修篇 依赖属性

2019-12-20 23:03:27  阅读:312  来源: 互联网

标签:DependencyProperty value static private 精修 new WPF 属性


原文:WPF 精修篇 依赖属性

依赖属性使用场景

1. 希望可在样式中设置属性。

2. 希望属性支持数据绑定。

3. 希望可使用动态资源引用设置属性。

4. 希望从元素树中的父元素自动继承属性值。

5. 希望属性可进行动画处理。

6. 希望属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告。

7. 希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。

 

依赖属性生成

PropertyMetadata 后面可以有默认值,

一个PropertyChangedCallback 当值改变的时候的触发方法

一个 CoerceValueCallback 对值进行限定 强制改变

  1. public int MyProperty
  2. {
  3. get { return (int)GetValue(MyPropertyProperty); }
  4. set { SetValue(MyPropertyProperty, value); }
  5. }
  6. // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
  7. public static readonly DependencyProperty MyPropertyProperty =
  8. DependencyProperty.Register("MyProperty", typeof(int), typeof(ownerclass), new PropertyMetadata(0,oncall));
  9. private static void oncall(DependencyObject d, DependencyPropertyChangedEventArgs e)
  10. {
  11. // 当值改变时 可以触发
  12. }

 

还有FrameworkPropertyMetadata 多了数据验证ValidateValueCallback

  1. public static readonly DependencyProperty SimpleDPProperty =
  2. DependencyProperty.Register("SimpleDP", typeof(double), typeof(SimpleDPClass),
  3. new FrameworkPropertyMetadata((double)0.0,
  4. FrameworkPropertyMetadataOptions.None,
  5. new PropertyChangedCallback(OnValueChanged),
  6. new CoerceValueCallback(CoerceValue)),
  7. new ValidateValueCallback(IsValidValue));
  8. private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  9. {
  10. Console.WriteLine("当值改变时,我们可以做的一些操作,具体可以在这里定义: {0}", e.NewValue);
  11. }
  12. private static object CoerceValue(DependencyObject d, object value)
  13. {
  14. Console.WriteLine("对值进行限定,强制值: {0}", value);
  15. return value;
  16. }
  17. private static bool IsValidValue(object value)
  18. {
  19. Console.WriteLine("验证值是否通过,返回bool值,如果返回True表示验证通过,否则会以异常的形式暴露: {0}", value);
  20. return true;
  21. }

 

标签:DependencyProperty,value,static,private,精修,new,WPF,属性
来源: https://www.cnblogs.com/lonelyxmas/p/12075443.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有