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

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

使用 DependencyProperty.Register 方法注册依赖属性。

该方法需要四个参数:

第一个参数是依赖属性的名称,这里为 "Age"。

第二个参数是依赖属性的数据类型,这里为 typeof(int)。

第三个参数是拥有该依赖属性的类的类型,这里为 typeof(DataModel)。

第四个参数是属性的元数据,通过 PropertyMetadata 类传递,这里设置了默认值 18。

依赖属性通过 GetValue 和 SetValue 方法进行访问和修改,而不是通过简单的getter和setter,这使得它们可以参与WPF的数据绑定、样式继承等高级功能

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

// 包装器:把依赖属性AgeProperty包装一下,可以理解成给依赖属性AgeProperty添加一个"外壳"。

// 添加"外壳"后让依赖属性用起来和普通属性一个用法。

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

csharp 复制代码
 public int Age
 {
     get { return (int)GetValue(AgeProperty); }
     set { SetValue(AgeProperty, value); }
 }

C. 属性的使用

给当前的XAML文档绑定上下文写法1:默认支持智能感知

只有给XAML文档绑定了上下文后,XAML文档中才能使用上下文对象中提供的数据(属性等)

csharp 复制代码
<Window.DataContext>
    <local:DataModel />
</Window.DataContext>
 <StackPanel>
     <Button
         Width="100"
         Height="30"
         Content="{Binding Path=Age}" />
     <Button
         Width="100"
         Height="30"
         Content="{Binding MyProperty}" />
 </StackPanel>

DataModel

csharp 复制代码
  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); }
      }
  }
相关推荐
聆风吟º1 小时前
CANN hccl 深度解析:异构计算集群通信库的跨节点通信与资源管控实现逻辑
人工智能·wpf·transformer·cann
无心水9 小时前
分布式定时任务与SELECT FOR UPDATE:从致命陷阱到优雅解决方案(实战案例+架构演进)
服务器·人工智能·分布式·后端·spring·架构·wpf
LZL_SQ11 小时前
HCCL测试框架中AllReduce边界条件测试设计深度剖析
wpf·cann
User_芊芊君子1 天前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
就是有点傻2 天前
WPF按钮走马灯效果
wpf
zuozewei2 天前
虚拟电厂聚合商平台安全技术体系深度解读
安全·wpf
极客智造2 天前
WPF 自定义控件:AutoGrid 实现灵活自动布局的网格控件
wpf
极客智造2 天前
WPF Grid 布局高效扩展:GridHelpers 附加属性工具类全解析
wpf
张人玉2 天前
WPF 多语言实现完整笔记(.NET 4.7.2)
笔记·.net·wpf·多语言实现·多语言适配
暖馒2 天前
深度剖析串口通讯(232/485)
开发语言·c#·wpf·智能硬件