摘要: 事件也附加——深入浅出附加事件WPF事件系统中还有一种事件被称为附加事件(Attached Event),简言之,它就是路由事件。“那为什么还要起个新名字呢?”你可能会问。“身无彩凤双飞翼,心有灵犀一点通”,这就是对附加事件宿主的真实写照。怎么解释呢?让我们看看都有哪些类拥有附加事件:Binding类:SourceUpdated事件,TargetUpdated事件Mouse类:MouseEnter事件、MouseLeave事件、MouseDown事件、MouseUp事件,等等Keyboard类:KeyDown事件、KeyUp事件,等等再对比一下那些拥有路由事件的类,诸如Button、Slide 阅读全文
posted @ 2013-05-24 16:40 三叶草╮ 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 今天写小东西的时候要用到PasswordBox控件。在实例名后面点个了点之后,发现没有Text这个属性(有Password属性)在网上搜索了一下,发现有三种使用PasswordBox的方法.使用其Password属性值(这个是最简单的了)使用Binding,把PasswordBox中的密码值与后台数据对象的某个属性关联使用PasswordBox的SecurePassword属性本文主要聊聊第三个方法。SecurePassword这个属性是在.NET 3.5 SP1的时候加进来的属性。SecurePassword的数据类型是SecureString. 对于SecurePassword类型实例,往 阅读全文
posted @ 2013-05-24 16:00 三叶草╮ 阅读(12049) 评论(0) 推荐(2) 编辑
摘要: 我们知道,XAML标签会对应一个实例。如果在XAML里初始化实例的属性,我们有两种语法可以选择:直接使用Attribute="Value"的方法属性元素(Property Element)方法今天我们讨论的核心就是——第一种方法是如何实现的。先看一个例子。我为一个Grid设置了矢量渐变画刷:<Grid><Grid.Background><LinearGradientBrushStartPoint="0,0"EndPoint="1,1"><GradientStopOffset="0&q 阅读全文
posted @ 2013-05-24 15:33 三叶草╮ 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 实际编程中,因为我们较多地使用到Binding类的Source与Path,所以可能会有一个思维定式,那就是:有可能作为数据源的类一定要准备好一些属性,这些属性将作为Binding的Path。如果本着这个思想去设计有可能作为数据源的类,那么会有两个问题出现:1. 这个类的哪些属性有可能作为数据源的Path?是都需要激发NotifyPropertyChanged事件,还是用到了再添加?这很有可能让这个类迟迟不能封闭。2. 需要用属性把一些方法包装起来,用来暴露给Binding,造成冗余和语义上的不美观。其实,WPF类库里有一个名为ObjectDataProvider的类就是专门为了解决这个矛盾的— 阅读全文
posted @ 2013-05-24 12:03 三叶草╮ 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 让我们分析这样一个需求——UI上有若干个文本框和一个“提交”按钮,这些文本框都是用户必须填写的,如果不都填写,提交按钮是不可用的。习惯了使用WinForm的同学可能脑子里已经开始飞速地搜寻使用Event来解决的方案了。实际上,在WPF里使用多路Data Binding将非常简单。所谓“多路Binding(也可以叫复合Binding)”就是指某个元素的Dependency Property的值不是由单一的数据源来决定,而是由多个数据源(通过一定逻辑)共同决定的,我们一般会把逻辑写在Converter里。是不是颇有些“脚踩N条船”的意思?多路Binding使用的类是MultiBinding类,这个 阅读全文
posted @ 2013-05-24 10:25 三叶草╮ 阅读(2882) 评论(0) 推荐(1) 编辑