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

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.xdnf.cn/news/19910.html

相关文章:

  • 鸿蒙权限崩溃?一招解决闪退难题
  • 单调栈与单调队列
  • ThinkPHP的log
  • C++二维数组的前缀和
  • 小杰机械视觉(finally)——题库上——gray、thresh、erode、dilate、HSV、开运算、ROI切割、矫正。
  • 博主必备神器~
  • HBase Region
  • 【代码解读】Deepseek_vl2中具体代码调用
  • 一款高效、强大的子域名爬取工具,帮助安全研究者和渗透测试人员快速收集目标域名的子域名信息
  • 服务器数据恢复—OceanStor存储数据丢失原来这样恢复
  • HOW - 在浏览器下载一个 Excel 表格文件
  • 基于SpringBoot的大学生就业招聘系统
  • 撤回通知(我自己的账号)
  • 自建局域网gitlab如何修改提交时间
  • 不做推销做共情:一个小众独立站靠宠物殡葬用品,年营收超3600万元
  • 机器学习笔记-第二周
  • 力扣:2458. 移除子树后的二叉树高度(dfs序)
  • 基于单片机车流车速检测系统设计
  • C++字符串操作:string类与数组对比
  • MySQL知识大全
  • ansible循环+判断(with,loop,when,if,for)
  • Python爬虫进阶:面向对象编程构建可维护的爬虫系统
  • Babylon 编辑器快捷键小记
  • 零构建的快感!dagger.js 与 React Hooks 实现对比,谁更优雅?
  • Python OpenCV图像处理与深度学习:Python OpenCV DNN模块深度学习与图像处理
  • 线程安全问题及解决方案
  • 163起融资,梅卡曼德融资额夺冠,钉钉、百度智能云10周年,汉桑科技IPO| 2025年8月人工智能投融资观察 · 极新月报
  • Android --- 搭建JNI框架
  • % g++ *.cpp ...: fatal error: ‘opencv2/opencv.hpp‘ file not found 1
  • 数论常见公式定理大全