![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WPF
iamsupercola
平常人
展开
-
XAML的命名空间
一个最简单的XAML例子 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"转载 2011-11-21 22:25:01 · 4466 阅读 · 0 评论 -
数据绑定(八)使用Binding的RelativeSource
当一个Binding有明确的数据来源时可以通过为Source或ElementName赋值的办法让Binding与之关联,有的时候由于不能确定Source的对象叫什么名字,但知道它与作为Binding目标的对象在UI布局上有相对关系,比如控件自己关联自己的某个数据、关联自己某级容器的数据,就要使用Binding的RelativeSource属性。RelativeSource属性的数据类型为Relat原创 2011-12-07 21:00:26 · 18263 阅读 · 3 评论 -
数据绑定(五)使用集合对象作为列表控件的ItemsSource
ItemsSource属性可以接收一个IEnumerable接口派生类的实例作为自己的值,ItemsSource里存放的是一条一条的数据,列表式控件的条目容器会为这些数据传上外衣,只要为ItemsControl对象设置了ItemsSource属性值,ItemsControl对象就会自动迭代其中的数据元素,为每一个数据元素准备一个条目容器,并使用Binding在条目容器与数据元素之间建立起关联,例子原创 2011-12-07 14:33:03 · 6366 阅读 · 0 评论 -
数据绑定(七)使用ObjectDataProvider对象作为Binding的Source
ObjectDataProvider就是把对象作为数据源提供给Binding,类似的还有XmlDataProvider,也就是把XML数据作为数据源提供给Binding,这两个类的父类都是DataSourceProvider抽象类举例有一个Calculator类,提供了一个Add方法 public string Add(string arg1, string arg2)原创 2011-12-07 20:26:56 · 4483 阅读 · 0 评论 -
数据绑定(九)Binding的数据校验
Binding用ValidationRules属性来校验数据的有效性,ValidationRules属性类型是Collection,他可以设置多个数据校验条件,ValidationRule是抽象类,使用的时候需要创建它的派生类并实现它的Validate方法,Validate方法的返回值是ValidationResult类型对象,如果校验通过,就把ValidationResult对象的IsValid原创 2011-12-08 17:23:13 · 2559 阅读 · 0 评论 -
数据绑定(十一)多路绑定MultiBinding
有时候UI要显示的信息又不止一个数据来源决定,就需要使用MultiBinding,MultiBinding具有一个名为Bindings的属性,其类型是Collection,通过这个属性MultiBinding把一组Binding对象聚合起来,处在这个集合中的Binding对象可以拥有自己的数据校验与转换机制,它们汇集起来的数据将共同决定传往MultiBinding目标的数据。举例:有如下界面原创 2011-12-09 14:24:28 · 8688 阅读 · 0 评论 -
数据绑定(十)Binding的数据转换
当Source端Path所关联的数据与Target端目标属性数据类型不一致时,需要添加数据转换器,数据转换器是一个自定义的类,这个类需要实现IValueConverter接口,这个接口有两个方法需要实现:Convert和ConvertBack,当数据从Source流向Target时,将调用Convert方法,反之,将调用ConvertBack方法例子,首先定义飞机类型 publi原创 2011-12-09 14:02:04 · 2580 阅读 · 0 评论 -
WPF属性(一)依赖属性
依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得值的属性,拥有依赖属性的对象称为依赖对象,在传统开发中,一个对象所占用的内存在调用new操作符进行实例化的时候就已经决定了,而WPF允许对象在被创建的时候并不包含用于存储数据的空间,只保留在需要用到数据时能够获得默认值、借用其他对象数据或实时分配空间的能力,这种对象就是依赖对象,而这种实时获取数据的能力就是靠依赖属性来实现。W原创 2011-12-14 11:47:45 · 5046 阅读 · 0 评论 -
WPF事件(一)内置路由事件
Windows是消息驱动的操作系统,运行其上的程序也遵照这个机制运行,随着面向对象开发平台日趋成熟,微软把消息机制封装成了更容易让人理解的事件模型,一个事件包含3个关键点:事件的拥有者、事件的响应者、事件的订阅关系为了降低由事件订阅带来的耦合度和代码量,WPF推出了路由事件机制,路由事件与传统的直接事件的区别在于,直接事件激发时发送者直接将消息通过事件订阅交送给事件响应者,事件响应者使用其事件原创 2011-12-16 11:38:59 · 2797 阅读 · 0 评论 -
WPF属性(二)附加属性
附加属性是说一个属性本来不属于某个对象,但由于某种需求而被后来附加上,也就是把对象放入一个特定环境后对象才具有的属性就称为附加属性,附加属性的作用就是将属性与数据类型解耦,让数据类型的设计更加灵活,举例,一个TextBox被放在不同的布局容器中时就会有不同的布局属性,这些属性就是由布局容器为TextBox附加上的,附加属性的本质就是依赖属性,二者仅仅在注册和包装器上有一点区别小技巧,在VS中输原创 2011-12-15 17:52:23 · 11980 阅读 · 0 评论 -
WPF之资源
WPF中的数据分为四个等级存储:数据库、资源文件、WPF对象、变量每个WPF的界面元素都有一个名为Resources的属性,这个属性继承自FrameworkElement类,起类型为ResourceDictionary,ResourceDictionary能够以“key-value”对的形式存储资源,在保存资源时,ResourceDictionary认为资源对象的类型是object原创 2012-01-11 19:28:05 · 2542 阅读 · 0 评论 -
数据绑定(六)使用XML数据作为Binding的Source
.NET Framework提供了两套处理XML数据的类库1. 符合DOM标准的类库:包括XmlDocument、XmlElement、XmlNode、XmlAttribute等类,这套类库的特定是中规中矩、功能强大,但也背负了太多XML的传统和复杂2. 已LINQ为基础的类库:包括XDocument、XElement、XNode、XAttribute等类,这套类库的特点是可以原创 2011-12-07 17:00:27 · 3657 阅读 · 0 评论 -
数据绑定(三)为Binding指定绑定源的几种方法
Binding的源是数据的来源,所以,只要一个对象包含数据并能通过属性把数据暴露出来,它就能当作Binding的源来使用,常用的办法有:一。把普通CLR类型单个对象指定为Source如果类型实现了INotifyPropertyChanged接口,则可通过在属性的set语句中激发PropertyChanged事件来通知Binding数据已被更新二。把普通CLR集合类型对象指定为S原创 2011-12-06 22:45:45 · 3705 阅读 · 0 评论 -
数据绑定(二)把控件作为Binding源
下面的代码把一个TextBox的Text属性关联在了Slider的Value属性上<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micros原创 2011-12-06 15:35:23 · 2148 阅读 · 0 评论 -
布局篇-WrapPanel布局
WrapPanel内部采用流式布局,使用orientation属性控制流延伸方向,用HorizontalAlignment和VerticalAlignment两个属性控制内部控件的对齐,例子如下原创 2011-12-04 17:16:58 · 7594 阅读 · 0 评论 -
控件篇
日常使用最多的控件有6类:1. 布局控件:可以容纳多个控件或嵌套其他布局控件,例如Grid、StackPanel、DockPanel等,有共同的父类Panel2. 内容控件:只能容纳一个其他控件或布局控件作为它的内容,例如Window、Button等,有共同的父类ContentControl3. 带标题内容控件:相当于一个内容控件,但是可以加一个标题,例如GroupBox、TabI原创 2011-12-04 15:36:46 · 1912 阅读 · 0 评论 -
布局篇-StackPanel布局
StackPanel可以把内部元素在纵向或横向上紧凑排列,形成栈式布局StackPanel的三个属性属性名称数据类型可取值描述OrientationOrientation枚举HorizontalVertical决定内部元素是横向累积还是纵向累积HorizontalAlignment原创 2011-12-04 16:44:17 · 18657 阅读 · 1 评论 -
布局篇-Canvas布局
使用Canvas布局与在Windows Form窗体上布局基本上是一样的,当控件放置在Canvas里时附加上Canvas.X和Canvas.Y属性示例代码: 效果如图原创 2011-12-04 16:53:21 · 5075 阅读 · 0 评论 -
布局篇-Grid布局
特点:1)可以定义任意数量的行和列2)行的高度和列的宽度可以使用绝对值、相对比例或自动调整的方式,可设置最大值和最小值3)内部元素可以设置自己所在的行、列,还可以设置跨越几行、几列4)可以设置内部元素的对齐方向Grid类具有ColumnDefinitions和RowDefinitions两个属性,它们分别是ColumnDefinition和RowDefinition的集原创 2011-12-04 15:52:50 · 18629 阅读 · 0 评论 -
渐变画刷示例
例子代码原创 2011-12-04 12:51:41 · 2839 阅读 · 1 评论 -
布局篇-DockPanel布局
DockPanel内的元素会被附加上DockPanel.Dock这个属性,这个属性的数据类型为Dock枚举。Dock枚举可取Left、Top、Right和Bottom四个值,根据Dock的值,DockPanel内的元素会向指定方向累积、切分DockPanel内部剩余的空间,DockPanel的LastChildFill属性,用于设置DockPanel内最后一个元素是否会填充满全部的剩余空间示例原创 2011-12-04 17:02:36 · 9385 阅读 · 0 评论 -
x名称空间中的内容
x名称空间映射的是http://schemas.microsoft.com/winfx/2006/xaml,它包含的类均与XAML的解析有关,下面分三部分介绍一:x名称空间的attribute1. x:Class告诉XAML编译器将XAML标签的编译结果输出到哪个类中2. x:ClassModifier告诉XAML编译器由标签编译生成的类具有怎样的访问控制级别原创 2011-12-04 14:44:52 · 1356 阅读 · 1 评论 -
数据绑定(一)一个简单的例子
控件是用来展示数据的,而不是用来存储数据的如果把Binding比作数据的桥梁,那么它的两端分别是Binding的源(Source)和目标(Target),数据从哪里来哪里就是源,Binding就是加载中间的桥梁,Binding目标就是数据要到哪儿去,一般情况下,Binding源是逻辑层的对象,Binding目标是UI层的控件对象,这样,数据就会源源不断通过Binding送到UI层,也就完成了数原创 2011-12-05 22:12:55 · 3308 阅读 · 0 评论 -
数据绑定(四)使用DataContext作为Binding的Source
DataContext属性被定义在FrameworkElement类里,这个类是WPF控件的基类,这意味着所有WPF控件都具备这个属性,当一个Binding只知道自己的Path而不知道自己的Source时,它会沿着UI元素树一路向输的根部找过去,没路过一个节点,就看看这个节点的DataContext有没有指定的Path,如果有,就把这个对象作为自己的Source,看看例子,首先定义一个类原创 2011-12-07 00:03:15 · 10429 阅读 · 0 评论