WPF
文章平均质量分 85
HymanLiuTS
年过而立,又酸又臭,忙时敲代码,闲时读书写文章。
展开
-
WPF中的Binding(一)
Binding,顾名思义,即为绑定。在WPF中被封装成一个类,其相当于数据的桥梁,两端分别是Binding的源和目标。下面用一个简单的例子来说明Binding的用法。首先,新建一个名为Student的类,作为数据源class Student{private string name;public string Name{get{return name;}set{n原创 2016-03-15 20:57:40 · 3452 阅读 · 2 评论 -
WPF中的binding(七)- 使用LINQ检索作为Binding的数据源
LINQ,百度百科上这样解释:LINQ,语言集成查询(Language Integrated Query)是一组用于C#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。这里在列举一个百度百科举的一个小例子,查询int数组中小于5的数字,并按照大小顺序排列。int[] arr = new int[] { 8, 5,原创 2016-06-20 16:00:46 · 1685 阅读 · 1 评论 -
WPF中的binding(八)- 使用ObjectDataProvider对象作为Binding的Source
ObjectDataProvider,顾名思义就是把对象作为数据源提供给Binding,下面的例子,简要说明ObjectDataProvider的用法。首先,我们创建一个名为Calculator的类,类中定义一个Add的方法,用来实现两个参数的加法运算:class Calculator { public string Add(string arg1,string a原创 2016-06-20 16:08:48 · 3799 阅读 · 0 评论 -
WPF中控制窗口显示位置的三种方式
首先新建一个WPF工程,在主界面添加一个按钮,并给按钮添加点击事件button1_Click,然后新建一个用于测试弹出位置的窗口TestWindow。1、在屏幕中间显示,设置window.WindowStartupLocation = WindowStartupLocation.CenterScreen;private void button1_Click(object sender, R原创 2016-07-19 18:42:38 · 47639 阅读 · 8 评论 -
WPF中的简单打印
在WPF中,Grid、Canvas等界面的布局都支持利用PrintDialog进行简单打印。首先新建一个项目,Xmal代码如下:<Window x:Class="Print.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://s原创 2016-07-19 18:51:15 · 7864 阅读 · 2 评论 -
WPF中的模板(五)- 使用Style
一、Style中的Setter原创 2016-08-18 10:21:45 · 1371 阅读 · 0 评论 -
WPF中的属性(一)- CLR属性和依赖属性
一、CLR属性 CLR(Common Language Running)属性,本质是将一个类中的字段进行封装,以达到控制字段获取以及赋值的目的。 如下的Student类,作为一个学生,年龄显然不能为负数如果想要对age这一字段进行限制,我们可以采用CLR属性进行如下改写,public class Student { public原创 2016-08-18 10:28:27 · 5477 阅读 · 2 评论 -
WPF中的命令(二)- 命令中传递参数
在上一节中,new一个名叫Clear的RoutedCommand进行了命令绑定步骤的演示,其实在WPF中已经准备了一些便捷的命令库,他们都是静态类,包括了很多New、Close此类全局的静态的RoutedCommand。而这些命令可以用任何一个控件元素作为命令源,以New命令为例,全局范围内只有一个New命令,界面上有两个button,每个button都可以发送该命令。这时,问题就来了,我们怎么区原创 2016-08-29 09:21:37 · 6943 阅读 · 0 评论 -
WPF中的资源(一) - 静态资源和动态资源
WPF中,每个界面元素都含有一个名为Resources的属性,其存储的是以“键-值”对形式存在的资源,而其子级元素在使用这些资源时会从Resources中找到这些资源。在子级元素引用的资源分为StaticResource和DynamicResource,两者的不同在于,StaticResource在程序编译完成后就不能改变,而DynamicResource在编译完成后可以进行修改,如下代码:原创 2016-08-29 09:28:07 · 8838 阅读 · 1 评论 -
WPF中的事件(二)- 自定义路由事件
自定义路由事件的添加,共分为三个步骤:1、声明并注册路由事件 2、为路由事件添加CLR事件包装 3、创建可以激发路由事件的方法 以下实例,实现的功能是创建一个Button,每次点击该Button时激发自定义的路由事件ReportTime,传递按钮被点击的时间。 首先定义用于承载时间消息的事件参数,主要充当在事件中传递的参数的载体,必须继承自EventArgs类:public clas原创 2016-08-22 08:55:33 · 3549 阅读 · 0 评论 -
WPF中的事件(三)- 附加事件
附加事件的本质也是路由事件,路由事件的宿主是Button、Grid等这些我们可以在界面上看得见的控件对象,而附加事件的宿主是Binding类、Mouse类、KeyBoard类这种无法在界面显示的类对象。附加事件的提出就是为了让这种我们无法看见的类也可以通过路由事件同其他类对象进行交流。下面我们先定义一个包含附加事件的类:public class Student { pub原创 2016-08-22 09:05:57 · 4107 阅读 · 0 评论 -
WPF中的资源(二) - 二进制资源
WPF中的二进制资源,就是类似于MFC中在对话框程序中添加的图片、字符串等资源,程序在运行时将其转换成二进制,以供程序使用。下面以将字符串转换成二进制为例来说明,二进制资源的使用方法:首先在项目的Properties->Resources.resx中添加如下的字符串:然后在Xmal文件中,添加如下代码:<Window x:Class="_9_5.MainWindow"原创 2016-09-01 10:33:59 · 1876 阅读 · 0 评论 -
WPF中的命令(一)- 使用命令的步骤
命令的传递原理类似于路由事件,沿着VisualTree向上进行传递,但是和路由事件不同的是,它是有命令目标的,只有到达某个目标命令才会被执行。 总体来说,命令分为以下几个步骤: (1)声明并定义命令类对象 每一个命令类都继承自ICommand类,或者直接使用RoutedCommand类(派生自ICommand) (2)把命令赋值给命令源原创 2016-08-24 17:25:04 · 3670 阅读 · 1 评论 -
动态加载XAML
原文链接:http://www.cnblogs.com/pbuilder/好久没写Blogs了,现在在看【WPF编程宝典】,决定开始重新写博客,和大家一起分享技术。在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码。以下是动态加载XAML的一个事例代码。在debug文件夹下新建一个文本文件,重命名为:file.xaml插入界面代码:转载 2016-08-26 14:28:37 · 2041 阅读 · 0 评论 -
WPF中的binding(十二)- 多路Binding
有时候,UI需要的信息不止一个数据来源,这时候就需要使用多路绑定MultiBinding,上一节中我们实现了通过一个TextBox是否为空来控制一个Button的可用性。下面我们实现通过两个TextBox来控制Button的可用性:两个TextBox的不为空且内容一致时,Button才可用;否则不可用。首先,搭建界面,Xmal代码如下: <Window x:Class="_6原创 2016-07-05 07:59:28 · 2145 阅读 · 0 评论 -
WPF中的binding(十一)- Binding数据的转换
在实际的开发中,我们经常会遇到Binding的Source和Target是不同的类型,如下面的例子,我们需要将一个Button的IsEnable属性绑定到一个TextBox的Text属性,实现的效果是当TextBox的输入为空时,Button不可用。 Bingding中有一个叫做Converter的属性,顾名思义,就是转换器的意思,就可以帮助我们实现这种效果。 首先,原创 2016-07-05 07:54:05 · 2205 阅读 · 0 评论 -
WPF中TreeView的使用
WPF中对树控件的使用主要有两种方法, 方法一,对TreeView进行静态搭建,对应的XAML文件代码如下:<Window x:Class="TreeView.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.原创 2016-05-11 23:08:33 · 27138 阅读 · 8 评论 -
WPF中的binding(二)- 使用CLR对象或者对象名称作为Binding的数据源
上一节中主要介绍了在cs代码中进行绑定数据源的实现,后面将逐步介绍下为Binding指定数据源的几种方法。这一节,我们先介绍以CLR对象和对象名称作为Binding的数据源:一 以CLR对象作为Binding的数据源。 首先,介绍下CLR对象的概念。这里,只是我自己一个简单的理解,并没有涉及CLR很深层次的理论性的东西,因为我也不懂~。在C#中我们会经常看到下面这种类:原创 2016-05-12 09:56:41 · 2753 阅读 · 0 评论 -
WPF中的binding(四)- 使用集合对象作为列表控件的ItemsSource
WPF中列表式控件派生自ItemsControl类,继承了ItemsSource属性。ItemsSource属性可以接收一个IEnumerable接口派生类的实例作为自己的值(所有可被迭代遍历的集合都实现了这个接口,如数组、List等)。每一个 ItemsControl的派生类都有自己的条目容器,如ListBox的条目容器ListBoxItem.当我们利用Binding为一个ItemsContro原创 2016-06-08 18:54:32 · 10072 阅读 · 1 评论 -
WPF中的binding(三)- 使用DataContext作为Binding的数据源
前面两节介绍了通过把CLR对象指定赋值给Binding . Source或者把CLR对象的名称赋值给Binding.ElementName而实现将单个CLR对象指定为Binding的Source的方法。下面我们介绍没有Source的Binding,将DataContext作为Binding的源的方法。DataContext,顾名思义就是数据上下文,它被定义在FrameworkElement类里原创 2016-05-22 15:38:01 · 12641 阅读 · 0 评论 -
WPF中的binding(六)- 使用XML数据作为Binding的源
首先,定义一个XML文件,存放一组学生的信息,将其存放在D:\Test.XML中,我们把它显示在一个ListView样式中。 XMAL文件如下:<Window x:Class="_6_20.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2原创 2016-06-13 08:15:04 · 1982 阅读 · 0 评论 -
WPF中的binding(九)- 使用Binding的RelativeSource
我们进行Bingding时,如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding的RelativeSource进行绑定。一、控件关联自身的属性<Window x:Class="_6_27.MainWindow" xmlns="http://schema原创 2016-06-29 07:54:22 · 22505 阅读 · 3 评论 -
WPF中的binding(十)- Binding数据的校验
Binding的ValidationRules属性的类型是Collection,从它的名称可以看见,每个 Binding可以接收多个校验条件,每个条件都是ValidationRule对象。一、校验外部方法的更新操作首先,新建一个WPF项目,Xmal文件的代码如下:<Window x:Class="_6_31.MainWindow" xmlns="http://schem原创 2016-06-29 08:04:20 · 3187 阅读 · 0 评论 -
WPF中的模板(一)- DataTemplate
WPF中DataTemplate和ControlTemplate的一直感觉无法区分明白,后面看了两遍书,第二遍时才感觉有一点点明白这两个之间的区别。这里先介绍下我对DataTemplate的理解:一、先说定义DataTemplate,顾名思义是数据模板,从字面上理解是数据的表现形式,书上也都这么解释,并以此作为和ControlTemplate区分的标准。但是个人感觉这种解释太过于抽象,原创 2016-07-11 10:38:23 · 4397 阅读 · 0 评论 -
WPF中的模板(二)- ControlTemplate
一、TextBox控件的内部结构首先,我们先利用Blend解开TextBox控件的内部结构。利用Blend新建一个WPF项目,在界面上添加一个TextBox。我们看到,TextBox的四个角都是直角,我们现在试着把他的角变成圆角:选中这个控件,右键->编辑模板->编辑副本。这里面我们选择编辑副本是在当前这个TextBox的模板之上进行修改。然后弹出如下图所示的对话框。其中名称指原创 2016-07-11 10:53:00 · 4045 阅读 · 0 评论 -
ObservableCollection<T>类
ObservableCollection类命名空间:system.Collections.ObjectModel程序集:System(System.dll中)该类表示一个动态数据集合,在添加项、移除项或刷新整个列表时,集合将提供通知。以上是MSDN的介绍,该集合主要用在WPF的控件和数据源的绑定中,如:xmal文件中,放置一个ListBox控件,名字叫做UserGroupL原创 2016-03-15 19:45:02 · 3885 阅读 · 0 评论 -
WPF中的模板(三)- ControlTemplate和DataTemplate的应用
一、控件的TemplateParent属性。 在WPF中,每个控件都有一个TemplateParent属性,如果他的值不为Null,标明这个控件是由Template自动生成的,而该属性的值就是应用了该模板的控件。 如,在前面提到的TextBox实际上是由Microsoft_Windows_Themes:ListBoxChrome下面包含一个ScrollViewer构成,对于Li原创 2016-07-24 10:35:19 · 3946 阅读 · 0 评论 -
WPF中的模板(四)- 寻找ControlTemplate和DataTemplate的控件
一、WPF中的两棵树 WPF中每个控件的Template都是由ControlTemplate构成,ControlTemplate包含了构成该控件的各种子控件,这些子控件就构成了VisualTree;而在我们可见的界面,所有搭建出整个程序UI的控件构成了LoginTree。VisualTree和LoginTree相互独立,互相不可访问,每中树都有各自的方法来查找自己的子控件。 二原创 2016-07-25 08:07:59 · 9018 阅读 · 0 评论 -
GridView实现合并单元格效果
XMAL文件<Window x:Class="_11_222.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:c="clr-原创 2016-07-25 08:13:57 · 3413 阅读 · 1 评论 -
WPF中的binding(五)- 使用DataTable作为Binding的源
一、DataTable的DefaultView属性赋值给ListBox等派生自ItemsControl类的对象。XAML文件如下,我们设置ListBox的DisplayMemberPath为Name,这样会在ListBox的列表中显示DataTable对应的Name列:<Window x:Class="_6_18.MainWindow" xmlns="http://sche原创 2016-06-13 08:10:33 · 8957 阅读 · 0 评论