当前位置: 首页 > news >正文

WPF依赖属性和依赖属性的包装器:

依赖属性是WPF(Windows Presentation Foundation)中的一种特殊类型的属性,特别适用于内存使用优化和属性值继承。依赖属性的定义包括以下几个步骤:

使用 DependencyProperty.Register 方法注册依赖属性。
该方法需要四个参数:
第一个参数是依赖属性的名称,这里为 “Age”。
第二个参数是依赖属性的数据类型,这里为 typeof(int)。
第三个参数是拥有该依赖属性的类的类型,这里为 typeof(DataModel)。
第四个参数是属性的元数据,通过 PropertyMetadata 类传递,这里设置了默认值 18。
依赖属性通过 GetValue 和 SetValue 方法进行访问和修改,而不是通过简单的getter和setter,这使得它们可以参与WPF的数据绑定、样式继承等高级功能

 public static readonly DependencyProperty AgeProperty =
DependencyProperty.Register("Age", typeof(int), typeof(MainWindow), new PropertyMetadata(18));

// 包装器:把依赖属性AgeProperty包装一下,可以理解成给依赖属性AgeProperty添加一个“外壳”。
// 添加“外壳”后让依赖属性用起来和普通属性一个用法。

// B。依赖属性的包装器:

 public int Age{get { return (int)GetValue(AgeProperty); }set { SetValue(AgeProperty, value); }}

C. 属性的使用
给当前的XAML文档绑定上下文写法1:默认支持智能感知
只有给XAML文档绑定了上下文后,XAML文档中才能使用上下文对象中提供的数据(属性等)

<Window.DataContext><local:DataModel />
</Window.DataContext><StackPanel><ButtonWidth="100"Height="30"Content="{Binding Path=Age}" /><ButtonWidth="100"Height="30"Content="{Binding MyProperty}" /></StackPanel>

DataModel

  public class DataModel : Window{public int MyProperty { get; set; } = 100;// A。依赖属性的定义又叫依赖属性注册。通过DependencyProperty.Register()方法。// 方法参数:// 1.属性名// 2.属性类型// 3.依赖属性所属的类// 4.属性元数据,依赖属性的默认值public static readonly DependencyProperty AgeProperty =DependencyProperty.Register("Age", typeof(int), typeof(MainWindow), new PropertyMetadata(18));// 包装器:把依赖属性AgeProperty包装一下,可以理解成给依赖属性AgeProperty添加一个“外壳”。// 添加“外壳”后让依赖属性用起来和普通属性一个用法。// B。依赖属性的包装器:public int Age{get { return (int)GetValue(AgeProperty); }set { SetValue(AgeProperty, value); }}}
http://www.dtcms.com/a/362749.html

相关文章:

  • iOS混淆工具实战 视频流媒体类 App 的版权与播放安全保护
  • 安卓学习 之 gradle下载失败的解决方法
  • Elasticsearch面试精讲 Day 5:倒排索引原理与实现
  • 跨越产业技术障碍、创新制造模式的智慧工业开源了
  • 【开题答辩全过程】以宠物生活社区为例,包含答辩的问题和答案
  • 扩散模型驱动的智能设计与制造:下一场工业革命?
  • 最新!阿里财报电话会蒋凡与吴泳铭透露重要信息:淘宝闪购成绩斐然;零售与AI双轮驱动;阿里云推出“Agent Bay”新产品···
  • 物联网为何离不开天硕工业级SSD固态硬盘?
  • maven 常用指令
  • Corona渲染噪点终结指南:3ds Max高效去噪全攻略
  • 【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply
  • 通信中FDD和TDD的区别
  • 【SpringBootWeb开发】《一篇带你入门Web后端开发》
  • 242. 有效的字母异位词| 349. 两个数组的交集
  • 框架-SpringMVC-1
  • 手写Muduo网络库核心代码1-- noncopyable、Timestamp、InetAddress、Channel 最详细讲解
  • hive udf 执行一次调用多次问题
  • 算法 --- 模拟
  • HDFS读写机制深度解析:分布式存储的核心奥秘
  • Zookeeper分布式锁原理
  • java-设计模式-5-创建型模式-建造
  • 科普:为什么在开发板上运行 Qt 程序时需要在命令后加 -platform linuxfb
  • 少儿舞蹈小程序从0到1(5):搭建关于我们页面
  • 深入浅出 RabbitMQ - SpringBoot2.X整合RabbitMQ实战
  • 23种设计模式-抽象工厂模式
  • 蓝桥杯算法之基础知识(4)
  • Mysql杂志(七)
  • Deepin25安装mysql8.4.5
  • 在ROS中获取并发布UBS式传感器的温湿度
  • PostgreSQL(1) FETCH用法