博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Deriving from BindableBase更简单的绑定通知
阅读量:5796 次
发布时间:2019-06-18

本文共 1875 字,大约阅读时间需要 6 分钟。

Visual Studio creates a BindableBase class in the Common folder of your projects. (Don’t confuse this class with the BindingBase class from which Binding derives.)

BindableBase 是像下面这样定义的

public abstract class BindableBase : INotifyPropertyChanged

{ public event PropertyChangedEventHandler PropertyChanged;

protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)

{ if (object.Equals(storage, value))

return false; storage = value; this.OnPropertyChanged(propertyName); return true; }

protected void OnPropertyChanged([CallerMemberName] string propertyName = null)

{ var eventHandler = this.PropertyChanged;

if (eventHandler != null)

{ eventHandler(this, new PropertyChangedEventArgs(propertyName)); } } }

BindableBase 类的使用方法:

using Windows.UI; using ColorScrollWithDataContext.Common; namespace ColorScrollWithDataContext { public class RgbViewModel : BindableBase { double red, green, blue; Color color = Color.FromArgb(255, 0, 0, 0); public double Red{ set { if (SetProperty
(ref red, value)) Calculate(); } get { return red; } } public double Green { set { if (SetProperty
(ref green, value)) Calculate(); } get { return green; } } public double Blue { set { if (SetProperty
(ref blue, value)) Calculate(); } get { return blue; } } public Color Color { set { if (SetProperty
(ref color, value)) { this.Red = value.R; this.Green = value.G; this.Blue = value.B; } } get { return color; } } void Calculate() { this.Color = Color.FromArgb(255, (byte)this.Red, (byte)this.Green, (byte)this.Blue); } } }

使用方法 ,定义字段 double red,在 Red里面 属性set 调用

SetProperty
(refred, value),就可以了
SetProperty
(ref red, value)返回true 表示red 改变,返回false 没有改变 。NET 4.5 。C# 5.0 这样用

转载于:https://www.cnblogs.com/gisbeginner/archive/2012/09/04/2670452.html

你可能感兴趣的文章
前端路由简介以及vue-router实现原理
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
分享15款很实用的 Sass 和 Compass 工具
查看>>
AMD优势: 与众不同 选择丰富
查看>>
玩转高性能超猛防火墙nf-HiPAC
查看>>
简单按日期查询mysql某张表中的记录数
查看>>
Sql Server 2008 R2 备份与还原
查看>>
自动化部署之jenkins发布PHP项目
查看>>
C/C++编程可用的Linux自带工具
查看>>
三种数据分析法提升电商运营
查看>>
哪个线程执行 CompletableFuture’s tasks 和 callbacks?
查看>>
《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.10 练习
查看>>
Oracle ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名...
查看>>
多线程之volatile关键字
查看>>
如何判断webview是不是滑到底部
查看>>
Raptor实践2——控制结构
查看>>
Smartisan OS一步之自定义拖拽内容
查看>>
海贼王十大悲催人物
查看>>
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 搞定!
查看>>
热点热词新闻资讯API开放接口(永久免费开放)
查看>>