摘要: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"这个命名空间存放的就是XAML和XAML编译器沟通的东西,比如编译时与那个C#代码合并等一、 在XAML中出现的方式有三种1.标签扩展: x:Array, x:Null, x:Static, x:Type2. XAML指令元素: x:Code, x:XData3. Attribute: x:Class, x:ClassModifier, x:FieldModifier, x:Key, x:Name, x: Shared, X:Subclass, x:TypeArgum 阅读全文
posted @ 2013-05-29 15:14 三叶草╮ 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 表达式在右边的 Lambda 表达式称为“Lambda 表达式”。Lambda 表达式在构造表达式树(C# 和 Visual Basic)时广泛使用。Lambda 表达式返回表达式的结果,并采用以下基本形式:(input parameters) => expression只有在 Lambda 有一个输入参数时,括号才是可选的;否则括号是必需的。两个或更多输入参数由括在括号中的逗号分隔:C#(x, y) => x == y有时,编译器难于或无法推断输入类型。如果出现这种情况,您可以按以下示例中所示方式显式指定类型:C#(int x, string s) => s.Length 阅读全文
posted @ 2013-05-29 09:44 三叶草╮ 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 在WPF中。有着两种资源, 一种是组件资源:又被称为程序集资源,以二进制存在编译后的程序集中,通常用于存放图片或其他音频文件. 第二种是对象资源:通常放于xaml中。比如WPF的样式和数据绑定特性. demo地址 http://download.csdn.net/source/3449754 组件资源:和以前的WINFORM 和WEB中的图片资源一样 获取方式:例如在程序中添加了一个图片。可以直接通过下面 在XAML中添加:<Image x:Name="image1"Source="image/Desert.jpg"></Image&g 阅读全文
posted @ 2013-05-28 15:02 三叶草╮ 阅读(628) 评论(0) 推荐(0) 编辑
摘要: 我们知道,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 三叶草╮ 阅读(246) 评论(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) 编辑
摘要: 上篇文已经说明,Binding就是数据源与目标之间的“关联”。大多数情况下,数据从Source到Target以及从Target返回Source都是“直来直去”的,但有些场景却需要我们对数据做些转换才能为我所用。举两个典型的例子:如果数据源里的值是Y和N,如果是Y,那么UI上的CheckBox就被勾选,否则就不勾选,这就需要我们把string(也许是char)类型的数据转换成bool?类型再使用。如果Binding是TwoWay的,CheckBox的勾选操作还会把值传回数据源。如果“评论内容”TextBox里没有内容,则“提交”Button不可以点击。这是个典型的OneWay数据Binding, 阅读全文
posted @ 2013-05-23 16:23 三叶草╮ 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 如果用一句话概括前几篇关于data binding的文章,那就是:介绍了数据驱动(界面)开发的基本原理,以及如何使用Binding类的实例连接数据源与数据表现元素、形成一对一的binding(为了让数据有效、安全,我们还可以添加Converter和ValidationRule等附件)。注意啦,我强调了一下——是一对一的binding哦!也就是说,一个binding实例一端是数据源、一端是表现元素。现在问题来了:实际工作中,我们操作的大部分数据都是集合,怎么进行“群体binding”呢?呵呵,这就引出了我们今天的第一个topic——对集合进行binding。集合Binding揭秘我们想这样一个问 阅读全文
posted @ 2013-05-23 16:22 三叶草╮ 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 让我们了解Data Binding的几个关键概念了——数据源(Data Source,简称Source):顾名思义,它是保有数据的实体、是数据的来源、源头。把谁当作数据源完全由程序员来决定——只要你想把它当做数据核心来使用。它可以是一个UI元素、某个类的实例,也可以是一个集合(关于对集合的绑定,非常重要,专门用一篇文章来讨论之)。路径(Path):数据源作为一个实体可能保有着很多数据,你具体关注它的哪个数值呢?这个数值就是Path。就上面的例子而言,slider1是Source,它拥有很多数据——除了Value之外,还有Width、Height等,但都不是我们所关心的——所以,我们把Path设 阅读全文
posted @ 2013-05-22 18:19 三叶草╮ 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 附件表结构如下:上传附件: /// <summary> /// 上传附件 /// </summary> /// <param name="filePath">上传文件路径</param> /// <param name="strAttachmentId">返回附件ID</param> /// <returns>true :上传成功 ; false :上传失败</returns>private bool UploadAttachment(string fileP 阅读全文
posted @ 2013-05-17 15:22 三叶草╮ 阅读(841) 评论(0) 推荐(0) 编辑