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

做坏事网站2024年新冠疫情最新消息

做坏事网站,2024年新冠疫情最新消息,广众人才网猎头网站建设,做网站销售大概多少钱WPF核心技术解析与使用示例 一、依赖属性(Dependency Property)详解 1. 依赖属性基础 ​​核心概念​​: 依赖属性是WPF实现数据绑定、样式、动画等特性的基础通过属性系统实现高效的内存管理和值继承​​标准定义模式​​: public class MyControl : Control {// 1. 定义…

WPF核心技术解析与使用示例

一、依赖属性(Dependency Property)详解

1. 依赖属性基础

​核心概念​​:

  • 依赖属性是WPF实现数据绑定、样式、动画等特性的基础
  • 通过属性系统实现高效的内存管理和值继承

​标准定义模式​​:

 
public class MyControl : Control
{// 1. 定义依赖属性标识符public static readonly DependencyProperty MyPropertyProperty =DependencyProperty.Register(nameof(MyProperty),                // 属性名称typeof(string),                    // 属性类型typeof(MyControl),                 // 所属类型new PropertyMetadata("默认值"));   // 默认值和回调// 2. 定义CLR包装属性public string MyProperty{get => (string)GetValue(MyPropertyProperty);set => SetValue(MyPropertyProperty, value);}
}

​关键特性​​:

  • ​值继承​​:子元素可以继承父元素的属性值
  • ​变更通知​​:自动通知UI更新
  • ​存储优化​​:只在值改变时存储实际值
  • ​动画支持​​:可直接用于动画系统

2. 依赖属性元数据

 
new PropertyMetadata(defaultValue: "默认值",                     // 默认值propertyChangedCallback: OnValueChanged,   // 值改变回调coerceValueCallback: CoerceValue,          // 值强制回调isAnimationProhibited: false               // 是否禁止动画
);// 回调示例
private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{var control = (MyControl)d;// 处理属性变化逻辑
}private static object CoerceValue(DependencyObject d, object baseValue)
{if (baseValue is string str && str.Length > 10){return str.Substring(0, 10); // 限制最大长度}return baseValue;
}

二、附加属性(Attached Property)详解

1. 附加属性概念

​核心特点​​:

  • 可由非所有者类型定义
  • 可附加到任何DependencyObject上
  • 常用于布局控制(Grid.Row)和行为扩展

​实现示例​​:

 
public class GridHelper
{// 定义附加属性public static readonly DependencyProperty ColumnProperty =DependencyProperty.RegisterAttached("Column",typeof(int),typeof(GridHelper),new PropertyMetadata(0));// CLR包装器public static int GetColumn(DependencyObject obj) => (int)obj.GetValue(ColumnProperty);public static void SetColumn(DependencyObject obj, int value) => obj.SetValue(ColumnProperty, value);
}

​XAML使用​​:

 
<Grid><Button GridHelper.Column="1" Content="附加属性示例"/>
</Grid>

三、命令模式(Commanding)

1. RelayCommand实现

 
public class RelayCommand : ICommand
{private readonly Action<object> _execute;private readonly Predicate<object> _canExecute;public RelayCommand(Action<object> execute, Predicate<object> canExecute = null){_execute = execute ?? throw new ArgumentNullException(nameof(execute));_canExecute = canExecute;}public bool CanExecute(object parameter) => _canExecute == null || _canExecute(parameter);public void Execute(object parameter) => _execute(parameter);public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; }remove { CommandManager.RequerySuggested -= value; }}
}

​ViewModel中使用​​:

 
public class MainViewModel : INotifyPropertyChanged
{private string _name;public string Name{get => _name;set { _name = value; OnPropertyChanged(); }}public ICommand SayHelloCommand { get; }public MainViewModel(){SayHelloCommand = new RelayCommand(execute: _ => MessageBox.Show($"Hello, {Name}!"),can
http://www.dtcms.com/wzjs/58907.html

相关文章:

  • 三原县城乡建设局网站优化问题
  • 网站建设如何敲图标代码搜索引擎营销的方式
  • 文化墙 北京广告公司seo人才
  • 中国建设银行信用卡电话苏州seo营销
  • 济南网站定制策划微博seo排名优化
  • 江西最新新闻事件乐天seo培训中心
  • 辽宁大连网站建设com天堂网
  • 重庆转店铺哪个网站平台好营销策略怎么写
  • 301网站跳转设置seo常用工具有哪些
  • 可以做网站的渠道东莞今日头条最新消息
  • 做网站教程视频关键词seo排名怎么做的
  • Visual Basic .NET做网站网站推广策划思路
  • 项目计划书怎么做页优化软件
  • 怎么用dw做静态网站广告联盟官网
  • 东莞石龙网站建设什么是软文营销
  • 如何做网站竞品分析百度云搜索资源入口
  • 都匀住房与城乡建设部网站seo就业前景如何
  • 合肥网站建设哪个公司做得比较好百度提交网站入口网址
  • iis如何做网站管理器seo优化推广
  • 重庆奉节网站建设公司哪里有seo是做什么工作内容
  • 通用集团网站模板最新seo网站优化教程
  • 创建网站是怎么赚钱的网站设计需要什么
  • 网站建设物美价廉三门峡网站seo
  • 学校网站建设必要性网络营销的渠道有哪些
  • 中文网站模板下载搜索关键词排名优化
  • 企业vi系统设计是什么seo服务内容
  • 三、网站开发使用软件环境太原seo快速排名怎么样
  • 嘉兴做网站的哪家好网络搜索词排名
  • 网站三合一怎么找推广渠道
  • 做直播网站用什么系统国外免费域名