CPF 入门教程 - 属性和事件(七)
属性写法:
复制代码
///
/// 绑定的数据上下文
///
[PropertyMetadata(null)]
public virtual object DataContext
{
get { return GetValue(); }
set { SetValue(value); }
}
/// <summary>/// 前景色/// </summary>[UIPropertyMetadata(typeof(ViewFill), "Black", UIPropertyOptions.AffectsRender)]public ViewFill Foreground{get { return (ViewFill)GetValue(); }set { SetValue(value); }}
复制代码
属性上的特性可以是 PropertyMetadata或者UIPropertyMetadata 中的一个,默认值建议通过这两个特性来设置。如果不加这两个特性,那默认值就是null或者0,属性不能是private,否则子类无法使用该属性,
子类不能用new的方式来覆盖属性
如果是复杂属性类型默认值,可以通过重写 OnOverrideMetadata 来设置
protected override void OnOverrideMetadata(OverrideMetadata overridePropertys){base.OnOverrideMetadata(overridePropertys);overridePropertys.Override("StrokeStyle", new UIPropertyMetadataAttribute(new Stroke(1)));}
如果不希望声明为依赖属性,上面加[NotCpfProperty]
复制代码
[NotCpfProperty]
public bool IsMeasureValid
{
get;
private set;
}
复制代码
附加属性:
特殊的依赖属性,用来做特殊功能的标记
复制代码
///
/// 获取或设置元素行索引
///
public static Attached RowIndex
{
get { return CpfObject.RegisterAttached(0); }
}
Grid.RowIndex(control, 1);//使用附加属性方式设置行索引
var index = Grid.RowIndex(control);//获取附加属性值
control.Attacheds.Add(Grid.ColumnIndex, 0);
//附加属性的设置和绑定
new Border
{
Attacheds={ { Grid.ColumnIndex, 0,nameof(TabStripPlacement),this}},
}
复制代码
计算属性
计算属性来自Vue里的computed 可绑定,只读属性
当SelectValue或者TextSize属性值变化之后导致TestComputedProperty属性值变化,有提供属性通知
[Computed(nameof(SelectValue), nameof(TextSize))]public string TestComputedProperty{get { return SelectValue == null ? "" : SelectValue.ToString() + TextSize; }}
属性通知
如果是对象自己内部绑定,定义个方法,上面加个PropertyChanged(通知的属性名)就行,方法参数必须是
(object newValue, object oldValue, PropertyMetadataAttribute attribute)
PropertyChanged可以加多个,相当于绑定到多个属性通知事件
复制代码
[PropertyChanged(nameof(MarginBottom))]
[PropertyChanged(nameof(MarginLeft))]
[PropertyChanged(nameof(MarginRight))]
[PropertyChanged(nameof(MarginTop))]
void RegisterMargin(object newValue, object oldValue, PropertyMetadataAttribute attribute)
{
}
复制代码
一般不建议用重写 OnPropertyChanged的方式来处理属性变化事件
如果外部的话,绑定PropertyChanged事件,通过事件数据CPFPropertyChangedEventArgs来判断属性和获取属性数据
事件定义
CpfObejct里的事件定义,弱引用事件,并且不会被重复绑定
复制代码
public event EventHandler DoubleClick
{
add { AddHandler(value); }
remove { RemoveHandler(value); }
}
RaiseEvent(e, nameof(DoubleClick));//触发事件
USB Microphone https://www.soft-voice.com/
Wooden Speakers https://www.zeshuiplatform.com/
亚马逊测评 www.yisuping.cn
深圳网站建设www.sz886.com
CPF 入门教程 - 属性和事件(七)相关推荐
- Caliburn.Micro 杰的入门教程3,事件和参数
Caliburn.Micro 杰的入门教程1(翻译) Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译) Caliburn.Micro 杰的入门教程 ...
- Linux Shell脚本入门教程系列之(七)Shell输出
本文是Linux Shell脚本系列教程的第(七)篇,更多shell教程请看:Linux Shell脚本系列教程 与其他语言一样,Shell中也有输出操作,而且在实际应用中也是非常重要的,继上一篇之后 ...
- 剑网三插件入门教程(4):事件
本篇教程将通过编写一个简单的自动采集插件来介绍剑三的"事件(Event) "这个概念. 自动采集插件的功能就是自动采集身边的矿和草药,当人物停下来的时候,如果身边有可以采集到的矿和 ...
- AngularJS中文入门教程
AngularJS入门教程00:引导程序 4517 angularjs 03-29 14:14 01-07 17:25 15 AngularJS AngularJS 入门教程 Angu ...
- WPF入门教程(七)---依赖属性(3)(转)
WPF入门教程(七)---依赖属性(3) 2018年08月24日 08:33:43 weixin_38029882 阅读数:50 四. 只读依赖属性 在以前在对于非WPF的功能来说,对于类的属性的封装 ...
- 七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...
七牛服务器入门教程 by Dmitri Zimine 由Dmitri Zimine 使用无服务器,StepFunction和StackStorm Exchange构建社区注册应用 (Building ...
- 蘑菇云「行空板Python入门教程」第七课:舒尔特方格小游戏
注意力是一切学习的根本,是大脑进行感知.学习.思维等认知活动的基本条件.然而,无论是孩子还是成年人,我们常常会因开小差.注意力无法集中而困扰.此时,找到一个合适的方法来训练我们的注意力势在必行. 舒尔 ...
- ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区...
原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...
- R语言七天入门教程二:认识变量与运算符
R语言七天入门教程二:认识变量与运算符 一.什么是变量 1.变量 顾名思义,我们可以将变量理解为"可以改变的量",是计算机语言中能储存计算结果或能表示值的抽象概念.这里的值可以是数 ...
最新文章
- 利用keepalived和haproxy配置mysql的高可用负载均衡
- boost::geometry::detail::overlay::traverse用法的测试程序
- SAP 电商云 Spartacus UI 的自定义 hamburger 菜单
- 【编撰】Directfb 深入 001 初始化简介 01
- 【开发者portal在线开发插件系列三】字符串 及 可变长度字符串
- sshd iptable 傻瓜配置
- 音视频编解码:NVIDIA Jetson Linux Multimedia API(总结)
- poj - 1509 Glass Beads
- 自动化测试-selenium初始化Driver参考
- IntelliJ IDEA破解
- Ubuntu安装python步骤
- html渐变做一个彩虹,ps渐变工具:制作七色彩虹特效
- QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小
- word排版案例报告_Word操作技巧:图文混排,就是这么简单
- matlab hist 横坐标,matlab中hist函数的用法_matlab中hist函数 将EXCEL 中的日期 时间 导入到MATLAB坐标轴中...
- 美国计算机专业硕士好申请学校,美国计算机硕士申请难度大PK
- TcaplusDB君 · 行业新闻汇编(一)
- Ubuntu11.04中文输入法的安装(IBus-pinyin
- linux重启 envi服务,envi 4.3在ubuntu edgy下启动错误的解决
- 【设计模式】-创造篇-单例