摘要: 上一篇文章主要绍介的是Brush中的SolidColorBrush、渐变Brush及TileBrush,本篇将详细探讨TileBrush的三种子类型:ImageBrush、DrawingBrush和VisualBrush。一、ImageBrushImageBrush通过一幅位图填充区域,定义一种Brush。其主要属性即ImageSource指定一幅位图图片。二、DrawingBrushDrawingBrush以矢量为源填充区域,与ImageBrush的区别在于其与分辨率无关,在放大时不会出现位图的失真。使用DrawingBrush时通常使用其Drawing属性,其类型为System.Windo 阅读全文
posted @ 2012-06-07 11:16 风吹裤裆JJ凉 阅读(274) 评论(0) 推荐(0)
摘要: 在WPF和Silverlight中,Brush是应用很多的一种类型,主要用于填充各种图形及控件。Brush及其子类位于System.Windows.Media命名空间,其继承关系如下图所示:一、SolidColorBrushSolidColorBrush是最简单的一种Brush,包含一个Color属性,表示单色的画刷,例如使用红色填充一个矩形: 1: <Rectangle Margin="5" Height="50"> 2: <Rectangle.Fill> 3: <SolidColorBrush Color="R 阅读全文
posted @ 2012-06-07 11:16 风吹裤裆JJ凉 阅读(249) 评论(0) 推荐(0)
摘要: 接上一篇文章,在WPF中对图形进行操作,上一篇文章中使用了ImageSource(BitmapSource)中的两种:1、使用BitmapImage加载图片2、使用RenderTargetBitmap创建图片3、使用RenderTargetBitmap修改图片本文继续4、使用WriteableBitmap修改图片在使用RenderTargetBitmap修改图片中,原图片不变,只相当于在原图片的基础上添加一节新的内容,而如果对图片进行大的更改RenderTargetBitmap就不可以了,我们可以使用WriteableBitmap对图片进行修改,例如将生成一个返向位图: 1: <Wind 阅读全文
posted @ 2012-06-07 11:16 风吹裤裆JJ凉 阅读(264) 评论(0) 推荐(0)
摘要: 在WPF中,极大地丰富了关于图形、图像等多媒体元素的操作功能,本节主要讨论基本的图形。一、基本的图形类型对于WPF中的基本图形类主要位于System.Windows.Shapes命名空间,其类包括:需要说明的是,在System.Windows.Media命名空间也存在着类似的类型:对应在类名上,添加“Geometry”,这种类称为“几何类”,对于几何类只用来描述图形,而不使用任何的画笔(Pen)和刷子(Brush),即本身没有任何的颜色,并不支持交互,其作用只是用来构建图形;另外几何类通常作为Path类的Data属性的值使用(通常通过GeometryGroup构建复杂图形)。例如: 1: .. 阅读全文
posted @ 2012-06-07 11:15 风吹裤裆JJ凉 阅读(257) 评论(0) 推荐(0)
摘要: 在上一篇文章中主要讨论的是除Path之外的基本图形,本文主要讨论使用Path创建更加复杂的图形以及位图的处理。一、使用Path构建复杂图形Path所构建的图形由Data属性来定义,其属性的类型为Geometry(几何类),几何类类型的继承关系请参考我上一篇文章。例如要创建一个100*30的矩形,可以有两种做法: 1: <StackPanel> 2: <!--使用Rectangle直接创建矩形图形--> 3: <Rectangle Fill="Red" Width="100" Height="30" Hor 阅读全文
posted @ 2012-06-07 11:15 风吹裤裆JJ凉 阅读(295) 评论(0) 推荐(0)
摘要: 在第二十三节,我们使用CollectionView实现了对于绑定数据的导航,除导航功能外,还可以通过CollectionView对数据进行类似于DataView的排序、筛选等功能。一、数据的排序:使用第二十四节的数据源,查询所有的产品信息: 1: <Window x:Class="WPF_24.CollectionViewSortData" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.micr 阅读全文
posted @ 2012-06-07 11:14 风吹裤裆JJ凉 阅读(402) 评论(0) 推荐(0)
摘要: 在WPF中系统提供了两个数据源提供器(DataProvider):对象数据源提供器(ObjectDataProvider)和XML数据源提供器(XmlDataProvider)。其作用类似于ASP.Net数据源(DataSource)中的对象数据源(ObjectDataSource)和Xml数据源(XmlDataSource)。其继承结构如下:ObjectDataProvider用于处理由方法返回值所产生的数据源,其应用非常广泛,通常多层应用程序通常在界面上使用ObjectDataProvider处理由组件层所产生的数据。在本节中我们主要处理ObjectDataProvider,对于XmlDa 阅读全文
posted @ 2012-06-07 11:13 风吹裤裆JJ凉 阅读(499) 评论(0) 推荐(0)
摘要: 一、通过代码实现数据绑定通过代码实现数据绑定,使用的是System.Windows.Data命名空间的Binding类,主要使用Binding类的如下的属性:Source属性:绑定到的数据源Mode属性:绑定的模式(OneTime、OneWay、TwoWay、OneWayToSource或Default)Path属性:绑定到的数据源的属性Converter属性:绑定时所使用的类型转换器在绑定目标控件上使用SetBinding方法添加数据绑定。例如将MyData的Name属性绑定到txtName控件的Text属性上,使用MyColorConverter转换器将MyBindingColor的Col 阅读全文
posted @ 2012-06-07 11:12 风吹裤裆JJ凉 阅读(252) 评论(0) 推荐(0)
摘要: 绑定到集合数据源,原则上说只需要实现IEnumerable接口的类型均可以做为集合数据源进行数据绑定,例如:定义一个学生类(StudentInfo),一个学生集合类(继承ObservableCollection<StudentInfo>类),在集合类中添加若干学生的信息。 1: using System.ComponentModel; 2: 3: namespace WPFBindingCollection 4: { 5: /// <summary> 6: /// 学生信息类 7: /// </summary> 8: publ... 阅读全文
posted @ 2012-06-07 11:12 风吹裤裆JJ凉 阅读(210) 评论(0) 推荐(0)
摘要: WPF数据绑定为应用程序提供了一种表示数据和与数据交互的简单而又一致的方法。元素能够以公共语言运行库 (CLR) 对象和 XML 的形式绑定到各种数据源中的数据。一、数据绑定的基本概念:数据绑定涉及到两个方面:一个是绑定源,再一个是绑定目标。绑定源即控件绑定所使用的源数据,绑定目标即数据显示的控件。1、对于绑定源,在WPF可以是以下四种:CLR对象:可以绑定到CLR类的公开的属性、子属性、索引器上ADO.Net对象:例如DataTable、DataView等XML文件:使用XPath进行解析DependencyObject:绑定到其依赖项属性上,即控件绑定控件2、对于绑定目标,必须是WPF中的 阅读全文
posted @ 2012-06-07 11:11 风吹裤裆JJ凉 阅读(192) 评论(0) 推荐(0)
摘要: 对于数据绑定,绑定的数据源的值类型和绑定目标的依赖属性的值类型可能会不同,系统提供了一些默认的绑定类型转换,另外也可以由用户自定义这种绑定转换:一、定义CLR类型定义一个CLR类型,内部存在两个属性字符串类型的ColorString和Color对象类型的ColorObject,供应用程序界面调用: 1: using System.ComponentModel; 2: using System.Windows.Media; 3: 4: namespace BasicWPFDataBinding 5: { 6: public class MyBindingCol... 阅读全文
posted @ 2012-06-07 11:11 风吹裤裆JJ凉 阅读(178) 评论(0) 推荐(0)
摘要: 如果要做到一个应用程序其基本的内容不变,但改变整个应用程序的外观可以这样做:对于每一套外观定义一个ResourceDictionary在应用程序中,动态加载此应用程序(或窗体)的Resource例如,如下的应用程序,在选择不同的用户时,显示不同的Canvas背景及图片:主题样式A:主题样式B:主题样式C:主题样式A的ResourceDictionary的XAML文件内容: 1: <ResourceDictionary 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xm.. 阅读全文
posted @ 2012-06-07 11:10 风吹裤裆JJ凉 阅读(234) 评论(0) 推荐(0)
摘要: 一、WPF样式类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种,例如为Button定义统一的背景颜色和字体: 1: <Window.Resources> 2: <Style 3: TargetType="Button"> 4: <Setter Property="Background" Value="Yellow" /> 5: <Setter Property="Margin" Value="5" /& 阅读全文
posted @ 2012-06-07 11:10 风吹裤裆JJ凉 阅读(208) 评论(0) 推荐(0)
摘要: 一、什么是资源通常使用 WPF 资源作为重用通常定义的对象和值的简单方法。例如定义一种可以复用的单色的Brush对象,按钮的背景及矩形的填充颜色均使用此Brush: 1: <Window x:Class="WPFResource.WinBasicResource" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4: Titl 阅读全文
posted @ 2012-06-07 11:09 风吹裤裆JJ凉 阅读(195) 评论(0) 推荐(0)
摘要: 四、静态资源(StaticResource)和动态资源(DynamicResource)资源可以作为静态资源或动态资源进行引用。这是通过使用 StaticResource 标记扩展或 DynamicResource 标记扩展完成的。通常来说,不需要在运行时更改的资源使用静态资源;而需要在运行时更改的资源使用动态资源。动态资源需要使用的系统开销大于静态资源的系统开销。例如以下的例子: 1: <Window x:Class="WPFResource.StaticAndDynamicResource" 2: xmlns="http://schemas.micros 阅读全文
posted @ 2012-06-07 11:09 风吹裤裆JJ凉 阅读(283) 评论(0) 推荐(0)
摘要: WPF中的命令路由与事件路由是两个很让初学者头痛的概念,对于命令路由可以理解为,系统(WPF)定义了一系列的操作,在应用程序中可以直接使用。例如,定义一系列菜单,执行对窗体中文本框的复制、剪切、粘贴操作,简单地可以这样做: 1: <Grid> 2: <Grid.RowDefinitions> 3: <RowDefinition Height="23" /> 4: <RowDefinition /> 5: </Grid.RowDefinitions> 6: <Menu Grid.Row="0" 阅读全文
posted @ 2012-06-07 11:08 风吹裤裆JJ凉 阅读(301) 评论(0) 推荐(0)
摘要: 一、依赖项属性(Dependency Property)Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能。这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。本概述介绍 WPF 属性系统以及依赖项属性的功能,这包括如何在可扩展应用程序标记语言 (XAML) 中和代码中使用现有的依赖项属性。依赖项属性的用途在于提供一种方法来基于其他输入的值计算属性值。这些其他输入可以包括系统属性(如主题和用户首选项)、实时属性确定机制(如数据绑定和动画/演示图板)、重用模板(如资源 阅读全文
posted @ 2012-06-07 11:07 风吹裤裆JJ凉 阅读(191) 评论(0) 推荐(0)
摘要: 一、键盘类和键盘事件WPF提供了基础的键盘类(System.Input.Keyboard类),该类提供与键盘相关的事件、方法和属性,这些事件、方法和属性提供有关键盘状态的信息。Keyboard的事件也通过UIElement等XAML基元素类的事件向外提供。对于键盘操作,其常用的事件有两组:KeyDown事件和PreviewKeyDown事件:处理键盘键按下KeyUp事件和PreviewKeyUp事件:处理键盘键抬起其中KeyDown和KeyUp事件属于冒泡路由事件,而PreviewKeyDown和PreviewKeyup属于隧道路由事件。为了使元素能够接收键盘输入,该元素必须可获得焦点。默认情 阅读全文
posted @ 2012-06-07 11:07 风吹裤裆JJ凉 阅读(240) 评论(0) 推荐(0)
摘要: 由于园子里昨天使用Live Writer上传出现问题,昨天只能使用Web上的文本编辑器上传本文,造成代码、内容等格式的错误,现重发本文。一、Panel内容模型Panel内容模型指从System.Windows.Controls.Panel继承的控件,这些控件都是容器,可以在内部承载其他的控件和子容器。Panel内容模型包含的容器有:CanvasDockPanelGridTabPanelToolBarOverflowPanelUniformGridStackPanelToolBarPanelVirtualizingPanelVirtualizingStackPanelWrapPanel对于Pan 阅读全文
posted @ 2012-06-07 11:06 风吹裤裆JJ凉 阅读(202) 评论(0) 推荐(0)
摘要: WPF控件内容模型主要指派生于System.Windows.Controls.Control类的各种控件,其主要分为四部分:ContentControlHeaderedContendControlItemsControlHeaderedItemsControl其继承关系请参考我上一篇博客的内容。这四个类用作为 WPF 中大多数控件的基类。使用这些内容模型的类可以包含相同类型的内容,并以相同的方式处理该内容;可以放置在某个 ContentControl(或从 ContentControl 继承的类)中的任何类型的对象都可以放置在具有其他三个内容模型中的任何一个的控件中。如: 1: <Win 阅读全文
posted @ 2012-06-07 11:03 风吹裤裆JJ凉 阅读(263) 评论(0) 推荐(0)
摘要: WPF对控件其类型的继承方式如下(其中绿色表示的类是抽象类,蓝色表示的类是非抽象类)控件内容模型 System.Windows.Controls.Control类:表示 用户界面 (UI) 元素的基类,这些元素使用ControlTemplate来定义其外观ContentControl:ContentControl 是一种包含一段内容的 Control说明ContentControl 是一种包含一段内容的 Control。内容属性Content内容模型信息控件内容模型概述属于此类型系列的类型Button, ButtonBase, CheckBox, ComboBoxItem, ContentCo 阅读全文
posted @ 2012-06-07 11:03 风吹裤裆JJ凉 阅读(211) 评论(0) 推荐(0)
摘要: 一、Canvas在WPF中子元素的绝对定位的布局控件其子元素使用Width、Height定义元素的宽度和高度使用Convas.Left(Convas.Right)、Convas.Top(Convas.Bottom)定义与Convas容器的相对位置如果同时存在Convas.Left和Convas.Right、Convas.Top和Convas.Bottom,则Convas.Left、Convas.Top优先生效例如: 1: <Canvas> 2: <Button Canvas.Left="10" Canvas.Top="10" Heigh 阅读全文
posted @ 2012-06-07 11:02 风吹裤裆JJ凉 阅读(275) 评论(0) 推荐(0)
摘要: 一、GridGrid是以表格形式组织控件的一种布局方式,与Java AWT中的GridLayout类似,但区别在于WPF中的Grid的每一个单元格中可以放置多个控件,但控件可能会层叠在一起WPF中的Grid支持单元格的合并,类似于HTML中的table td中的rowspan和colspanGrid中的行和列可以自定义高度(Height)和宽度(Width) 在设置高度和宽度时可以采用两种写法: 1)Height=”60”:不加“星号”表示固定的高度 2)Height=”60*”:加“星号”表示“加权”的高度,在调整窗体大小时,此高度或宽度会按窗体大小改变的比例进行缩放如: 1: <Gr 阅读全文
posted @ 2012-06-07 11:01 风吹裤裆JJ凉 阅读(443) 评论(0) 推荐(0)
摘要: 一、StackPanelStackPanel是以堆叠的方式显示其中的控件1、可以使用Orientation属性更改堆叠的顺序Orientation="Vertical" 默认,由上到下显示各控件。控件在未定义的前提下,宽度为StackPanel的宽度,高度自动适应控件中内容的高度 1: <StackPanel Orientation="Vertical"> 2: <Button>Button A</Button> 3: <Button>Button B</Button> 4: <Butto 阅读全文
posted @ 2012-06-07 11:01 风吹裤裆JJ凉 阅读(241) 评论(0) 推荐(0)
摘要: 一、窗体类在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类(类型化窗体)。定义的窗体由两部分组成:1、XAML文件 1: <Window 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4: x:Class="WpfWindow.BasicWindow&qu 阅读全文
posted @ 2012-06-07 11:00 风吹裤裆JJ凉 阅读(208) 评论(0) 推荐(0)
摘要: 一、WPF应用程序由System.Windows.Application类进行管理二、创建WPF应用程序创建WPF应用程序有两种方式:1、Visual Studio和Expression Blend默认的方式,使用App.xaml文件定义启动应用程序 App.xaml文件的内容大致如下:XAML<Application x:Class="WpfApplicationLifeCycle.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x... 阅读全文
posted @ 2012-06-07 10:59 风吹裤裆JJ凉 阅读(181) 评论(0) 推荐(0)
摘要: 按照惯例,创建一个WPF的应用程序,点击按钮,在文本框中显示“Hello WPF World”,我们通过此例来分析WPF应用程序的结构。XAML文件如下:XAML文件<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="WPFHelloWorld.MainWindow" x:Name="Window& 阅读全文
posted @ 2012-06-07 10:35 风吹裤裆JJ凉 阅读(277) 评论(0) 推荐(0)
摘要: WPF的基础的体系结构,所引用的Assembly如下图所示:关系图中的PresentationFramework、PresentationCore 和 milcore是 WPF 的主要代码部分。在这些组件中,只有一个是非托管组件 – milcore。milcore 是以非托管代码编写的,目的是实现与 DirectX 的紧密集成。WPF 中的所有显示是通过 DirectX 引擎完成的,可实现高效的硬件和软件呈现。WPF 还要求对内存和执行进行精确控制。milcore 中的组合引擎受性能影响关系大,需要放弃 CLR 的许多优点来提高性能。在WPF中常用的的控件类继承结构如下图所示:System.O 阅读全文
posted @ 2012-06-07 10:32 风吹裤裆JJ凉 阅读(180) 评论(0) 推荐(0)
摘要: WPF(Windows Presentation Foundation,Windows外观基础(直译))是基于Framework 3.0(含以后版本)的新一代Windows界面开发技术。Silverlight(中文翻译为“银光”),可以看成是WPF的Web应用产品,其早先名为WPF/E。其主要应用于Web富客户端应用程序(RIA,Rich Interface Application)。现阶段此技术可以说比较“火”,微软在此方面主要的对手就是Adobe公司的以Flash为基础的Flex技术。两者均是以XAML为基础的,在某些条件下是可以相互的转换:如定义一个简单的ARGB调色版应用:WPF应用程 阅读全文
posted @ 2012-06-07 10:28 风吹裤裆JJ凉 阅读(189) 评论(0) 推荐(0)
摘要: 前一段时间一直很忙很忙,从4月份开始终于有时间学习一些新的东西了。回头一看,要学习整理的东西太多了:WPF、WCF、WF、Silverlight、JQuery、Ajax、ASP.Net MVC、ADO.Net Entry…想了想,终于决定先学习整理一下WPF和Silverlight的内容。并与园子里的朋友分享。笔者的开发环境如下:操作系统:Vista+SP1 英文版开发工具:Visual Studio 2008+SP1英文版 Silverlight 3.0 Beta Silverlight 3.0 Beta Tools for Visual Studio 2008 Expression Ble 阅读全文
posted @ 2012-06-07 10:22 风吹裤裆JJ凉 阅读(192) 评论(0) 推荐(0)