WPF学习
文章平均质量分 51
HFDNGL
这个作者很懒,什么都没留下…
展开
-
多路Binding(MultiBinding)
UI需要显示的信息由不止一个数据来源决定时,就使用MultiBinding,即多路Binding。 Bindings属性其类型是Collection,通过这个属性MultiBinding把一组Binding对象聚合起来。 处在这个集合中的Binding对象可以拥有自己的数据校验与转换机制。原创 2015-10-16 16:50:36 · 938 阅读 · 0 评论 -
WPF资源
WPF程序中数据就分为四个等级存储:数据库里的数据,资源文件里的数据,WPF对象里的数据,变量中的数据。一、WPF对象级资源的定义与查找原创 2015-10-23 16:33:05 · 561 阅读 · 0 评论 -
ControlTemplate
ControlTemplate主要有两大用武之地: 1. 通过更换ControlTemplate改变控件外观,使之具有更优的用户体验及外观。 2. 借助ControlTemplate,程序员与设计师可以并行工作,程序员可以先用WPF标准控件进行编程,等设计师的工作完成后,只需把新的ControlTemplate应用到程序中就可以了。原创 2015-10-26 20:13:30 · 504 阅读 · 0 评论 -
WPF DataTemplate
WPF中引入模板(Template)将数据和算法的“内容”与“形式”解耦。WPF:中Template分为两大类:ControlTemplate和DataTemplate。 下面详细介绍DataTemplate: DataTemplate是数据内容的表现形式,一条数据显示成什么样子,是简单的文本还是直观的图形动画就由他来决定。原创 2015-10-26 17:18:12 · 978 阅读 · 1 评论 -
DataTemplate与ControlTemplate的关系与应用
决定控件外观的是ControlTemplate,决定数据外观的是DataTemplate。 把ControlTemplate应用在所有目标上需要借助Style来实现,Style不能标记x:Key,原创 2015-10-27 20:02:04 · 467 阅读 · 0 评论 -
获得由ControlTemplate或DataTemplate生成的控件的内部控件
由ControlTemplate或DataTemplate生成的控件都是“由Template生成的控件”。ControlTemplate和DataTemplate两个类均派生子FrameworkTemplate类,这个类有个名为FindName的方法供我们检索其内部控件。原创 2015-10-28 09:14:10 · 943 阅读 · 0 评论 -
WPF绘图
WPF的基本图形包括以下几个:Line:直线段,可以设置触笔(Stroke) Rectangle:矩形,既有触笔,又有填充(Fill) Ellicps:椭圆,长宽相等即为正圆,既有触笔又有填充 Polygon:多边形,由多条直线段围成的闭合区域,既有触笔又有填充。 Polyline:折线(不闭合),由多边收尾相接的直线段组成。 Path:路径(闭合区域),由若干直线、圆弧、贝塞尔曲线组成。原创 2015-11-02 19:02:12 · 2175 阅读 · 0 评论 -
Style
Style中的SetterSetter,设置器。Setter类的Property属性用来指名目标的属性, Value为其提供属性值,如果想设置控件的ControlTemplate,只需要把Setter的Property设为Template并为Value提供一个ControlTemplate对象即可。原创 2015-10-30 18:01:40 · 613 阅读 · 0 评论 -
介绍WPF中DependencyProperty的一些基本用法
转自:http://blog.sina.com.cn/s/blog_6130c4c40100e7ud.html 这一篇Post中,我准备先介绍WPF中DependencyProperty的一些基本用法。在程序中使用DependencyProperty好的,我相信你已经决定了要使用DependencyProperty而不是传统的CLR属性,正如上一篇Post所说,很多地方都需要使用到Dependen转载 2016-03-09 11:28:05 · 5631 阅读 · 0 评论 -
Calendar控件改变日期后,使其自动失去焦点
Canlendar在改变日期是,在想点击其他地方需要点击两次,第一次相当于先失去焦点,第二次才可选中其他控件。这样非常不方便,我们可以在calendar_SelectedDatesChanged中,添加如下代码,使其自动失去焦点,可直接选中其他控件。if (sender != null){ UIElement el = (UIElement)sender; el.ReleaseSt原创 2016-06-28 18:46:17 · 1622 阅读 · 1 评论 -
自定义Command
第一层比较浅直接声明定义自己的RoutedCommand实例。这样很难算真正意义的“自定义命令”。 第二层指从实现ICommand接口开始,定义自己的命令并且把某些业务逻辑也包含在命令之中。下面看一个自定义清楚命令: 为了简化使用CommandBinding来处理业务逻辑的程序结构,可能会希望把业务逻辑移入命令的Execute方法内,这样命令直接在命令目标上起作用,而不像RoutedComman原创 2015-10-23 10:33:44 · 786 阅读 · 0 评论 -
WPF系统中的命令系统
事件不具有约束力,命令与事件的区别就在于命令具有约束力。 命令的使用大概分为以下几步: (1)、创建命令类:即获得一个实现ICommand接口的类,如果命令与具体业务逻辑无关则使用WPF类库中的RoutedCommand类即可。如果与业务逻辑相关的专有命令,则需要创建RoutedCommand(或者ICommand接口)的派生类。 (2)、声明命令实例:使用命令时需要创建命令类的实例。使用技巧原创 2015-10-22 15:10:54 · 1320 阅读 · 0 评论 -
Binding的数据转换(Data Converter)
当Source端Path所关联的数据与Target端目标属性数据类型不一致时,添加数据转换器(Data Converter),简单的数据转换(如double转string)WPF类库会自动转换。手动转换时需要手动写Converter,创建一个类,并实现IValueConverter接口。原创 2015-10-16 14:19:25 · 1127 阅读 · 0 评论 -
StackPanel布局
StackPanel可以把内部元素在纵向或横向上紧凑排列,形成栈式布局。转载 2015-10-19 15:39:07 · 579 阅读 · 0 评论 -
属性(Property)
字段或方法是否使用static修饰: “对类有意义”的字段或方法用static修饰; “对实例有意义”的地段或方法不使用static修饰。静态字段在内存中只有一个拷贝,非静态字段每个实例拥有一个拷贝; 无论方法时候为静态的,内存中只会有一份拷贝,区别在于静态方法通过类名来访问,还是通过实例名来访问。.NET Framework 的退出,微软把Get/Set这对方法合并成属性(Property)原创 2015-10-19 10:49:18 · 403 阅读 · 0 评论 -
Binding数据校验
Binding的ValidationRules属性类型是Collection<ValidationRule>,可以为每个Binding这只多个数据校验条件,每个条件是一个ValidationRule类型对象。ValidationRule类是抽象类,使用时创建派生类并实现Validate方法,该方法返回值是ValidationResult类型对象,通过校验ValidationResult对象的IsV原创 2015-10-15 17:41:19 · 742 阅读 · 0 评论 -
Grid布局
特点:1)可以定义任意数量的行和列2)行的高度和列的宽度可以使用绝对值、相对比例或自动调整的方式,可设置最大值和最小值3)内部元素可以设置自己所在的行、列,还可以设置跨越几行、几列4)可以设置内部元素的对齐方向Grid类具有ColumnDefinitions和RowDefinitions两个属性,它们分别是ColumnDefinition和RowDefinition的集合,表示Grid定义了多少列、原创 2015-10-21 16:15:05 · 562 阅读 · 0 评论 -
自定义路由事件
创建自定义路由事件大体分为三个步骤: (1)、声明并注册路由事件。 (2)、为路由事件添加CLR事件包装。 (3)、创建可以激发路由事件的方法。下面用一个例子来展示这个过程:原创 2015-10-21 20:39:34 · 1190 阅读 · 0 评论 -
RoutedEventArgs的Source与OriginalSource
路由事件是沿着VisualTree传递。VisualTree与LogicalTree区别在于:LogicalTree的叶子是构成用户界面的控件,而VisualTree要连接控件中的细微结构也算上。“路由事件在VisualTree上传递”本意上是说“路由事件的消息在VisualTree上传递”,而路由事件的消息包含在RoutedEventArgs实例中。原创 2015-10-22 10:40:17 · 2490 阅读 · 0 评论 -
ObservableCollection和List与INotifyPropertyChanged的使用
ObservableCollection和List的使用场合,分以下四种情况:1.最简单的是只用List,T不实现INotifyPropertyChanged接口,适用于一次性绑定,适用于重新实例化整个List集合的绑定。2.List,并且T实现INotifyPropertyChanged接口,因为INotifyPropertyChanged接口只是监测T,而没有监视List集合。所以修改转载 2015-10-21 16:46:06 · 2571 阅读 · 0 评论 -
命令参数
命令库里有很多WPF预制命令,如New、Open、Copy、Cut、Paste等。这些命令都是ApplicationCommands类的静态属性,所以实例永远只有一个,那么这时候就需要用CommandPrameter属性。原创 2015-10-22 16:43:58 · 608 阅读 · 0 评论 -
获取ItemsControl里面的控件
ItemsControl通过Binding获得数据,每个数据的模板在DataTemplate里面,直接查找DateTemplate里的控件获取不到。可以在ItemsControl的ItemContainerGenerator.StatusChanged时间里通过下列方法获得。this.itemsControl.ItemContainerGenerator.StatusChanged += ItemC原创 2016-06-28 19:03:51 · 4627 阅读 · 1 评论