随笔分类 - WPF
摘要:WPF中打印用到了 PrintDialog类。其中设置打印属性的是PrintTicket,管理打印机的是PrintQueue。实例如下:public class PrintDialogHelper { private const string PrintServerName = "YULIN-PC"; private const string PrintName = "HP LaserJet M1522 series PCL6 Class Driver"; public PrintDialogHelper() { } ...
阅读全文
摘要:目录:ValidationRule 验证Exception 验证IDataErrorInfo 验证Custom Control 验证1、ValidationRule 验证ValidationRule:是通过ValidationRule中的的Validate方法来验证我们绑定的属性。所以我们的用法是继承ValidationRule,重写他的Validate方法。示例public class RequiredRule : ValidationRule { public override ValidationResult Validate(object value, Cultur...
阅读全文
摘要:在.Net Framework 4引入了dynamic关键字。它是在运行时才确定对象的类型。在运行的时候确定类型的好处是,少了一些装箱,拆箱操作。WPF中也有动态对象概念,那就是DynamicObject,它继承于IDynamicMetaObjectProvider这个接口。DynamicObject这个类能实现动态的给属性赋值和取值。它提供给我们两个TrySetMember和TryGetMember方法。我们只要重写这两个方法,来设置我们需要的属性。我们自定义一个DynamicBindingProxy泛型类:public class DynamicBindingProxy<T>
阅读全文
摘要:目录: Metro风格控件 Metro主题 MahApps.Metro文档地址:http://mahapps.com/MahApps.Metro/ 源码地址:https://github.com/MahApps/MahApps.Metro 在VS中可以装一个NuGet插件来下载MahApps.Metro.dll和MahApps.Metro.Resources.dll。 Ma...
阅读全文
摘要:在WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate.其中ControlTemplate和ItemsPanelTemplate是控件模板,DataTemplate是数据模板,他们都派生自FrameworkTemplate抽象类。1、ControlTemplateControlTemplate:控件模板主要有两个重要属性:VisualTree内容属性和Triggers触发器。所谓VisualTree(视觉树),就是呈现我们所画的控件。Triggers可以对我们的视觉树上的元素进行一些变化。一般用于单内容控件。画一个按钮模板来举例说明:
阅读全文
摘要:一个系统需要有多种语言时,我们就要写另一个语言资源了,怎么样来实现语言间的切换。 下面我们先新建两个语言资源: Zh-CN.xaml和en-us.xaml 在App.config中要配置所需要的语言 <appSettings> <add key="language" value="en-us"/> </appSettings> 用这种写法,当我们需要改成中文语言资源时,只要把en-us该成zh-c...
阅读全文
摘要:在UIElement布局的时候,我们要知道父窗体或父控件要给子控件分配多少空间,换句话说子控件需要父控件提供多少空间给它。这些步骤在什么时候发生呢?这些过程来自UIElement的Measure 和Arrange,所以我们来重写这两个方法。看看里面到底做了些什么。父MeasureOverride 和ArrangeOverrideMeasure(测量),此方法实现:父元素从其自身的 MeasureCore 实现调用此方法以形成递归布局更新。其中Measure方法传入的参数是availableSize,这个availableSize是一个Size类型,表示的是父元素可以提供的大小。下面用实例来讲解
阅读全文
摘要:这是WPF最后一节,3D动画,用一个字来描述它“炫”,今天我们来揭秘它到底是何物。 首先我们来介绍下三维坐标空间和二维坐标空间的区别: 在3D动画中,要画一个3D模型,必须要有 1、照相机 2、光源 一、照相机 照相机相当于观察位置(你是从那个位置看的) 了解三维场景如何在二维图面上表示的另一种方法就是将场景描述为到观察表面上的投影。 有两种Camera: 1、ProjectionCamera 2...
阅读全文
摘要:XPS介绍:XPS文档和Word文档差不多,它提供打印功能。可以以浏览器的方式打开。 下面我们以一个实例来了解XPS。 首先打开vs,新建一个WPF项目。 在界面上拖入一个DocumentViewer控件和一个Button控件。 DocumentViewer 控件用于以已分页格式查看 FixedDocument 内容(例如,XML 纸张规范 (XPS) 文档) 现在要实现点Button,加载xp...
阅读全文
摘要:上次介绍了数据绑定到ListBox上,今天我们把数据绑定到TreeView,和Menu上。其实不同点在于DataTemplate。这次不是用DataTemplate了,而是用HierarchicalDataTemplate 这是分层的数据模板,Hierarchical是分层的意思。DataTemplate是数据模板。这样记容易记住吧。 我们还是用上次的数据。 我们来看.xaml [代码]这里不要忘...
阅读全文
摘要:上次讲到数据模板的绑定(DataTemplate),今天在这基础上我进行了延伸。下面我们把数据绑定到ObjectDataProvider上。ObjectDataProvider:包装和创建可以用作绑定源的对象。 首先我们先设定一些数据。 先看下结果图吧。 新建一个Data.cs类。 我们在里面新建6个类,看类图吧。 这里League是哪个国家的队,Division是这个国家队有哪些地方队组成,...
阅读全文
摘要:绑定资源模板 上一节我们了解到绑定的方式,下面我们来了解下资源模板的绑定。 我们先定义一个Person类(Person.cs),比如他有PersonName属性,可以实现变更通知。(Person.cs) [代码]我们给它一些 静态的数据。首先我们新建一个.cs文件叫 Datas.cs吧。里面是:[代码]后台都准备好了,我们就开始前台吧。先在xaml中添加 xmlns:local="clr-name...
阅读全文
摘要:WPF之绑定 绑定在WPF中是一个重点,也是难点。下面我们通过例子来简单讲讲绑定。 我们先画一个椭圆,用椭圆的宽来绑定Slider控件的Value。通常,每个绑定都具有四个组件:绑定目标对象、目标属性、绑定源,以及要使用的绑定源中的值的路径。这里绑定目标是ellipse1,目标属性是Width,绑定源是slider1,源属性是Value。运行看效果: 还有双向、单项绑定等。看下图。有图有真相。 O...
阅读全文
摘要:WPF做一个简单播放器 WPF中有个MediaPlayer类,它位于System.Windows.Media命名空间下。基于Windows Media Player构建起来的,所以下面做的播放器的前提是 电脑上必须安装Windows Media Player 10或更高版本。 一、打开vs,新建一个应用程序项目。 我们在窗体拖入一个MediaElement控件 下面我们来触发这个控件的播放。这里我...
阅读全文
摘要:制作动画路径-Path Path中有个Date属性,用来获取或设置指定要绘制的形状的 Geometry。 所以我们画一个圆来和一个椭圆路径,是圆在椭圆路径上移动,我们先画个圆。 Ellipse x:Name="e1" Stroke="Black" Width="50" Height="50" Fill="Red" Margin="0,0,228,211"/Ellipse 在画一个路径 Path x:Name="p1" Stroke="Blue" Path.Data EllipseGeometry x:Name="eg1" Center="120,100" RadiusX="
阅读全文
摘要:DoubleAnimation 接着上一篇使用的是XAML来实现动画的效果,今天我们用代码来实现下: 我们在窗体上放一个Rectangle,对这个Rectangle实现宽度的变化。当我们按下按钮来触发它的宽度变化。 具体代码如下: 我们在加点颜色的变化如何。在XAML中我们先要给个SolidColorBrush的Name。[代码]然后再按钮代码中添加:效果图:开始前 开始后的某一秒:
阅读全文
摘要:2D动画之—Trigger 我们知道Trigger是一个触发器,它按条件应用属性值或执行操作。 要注意的是:若要使触发器有意义,必须在 Trigger 上同时指定 Property 和 Value 属性。如果这两个属性或其中一个未设置,则会引发异常。 此外,还有其他类型的触发器。MultiTrigger 用于根据多个属性的状态应用更改。EventTrigger 用于指定在发生事件时应用更改。DataTrigger 和 MultiTrigger 用于数据绑定属性。 下面通过实例来了解强大的Trigger 首先我们画个矩形在面板上,并对它设置一个RotateTransform,我们后面要对这个
阅读全文
摘要:2D动画 今天主要讲2D动画,讲其中的StoryBoard属性。 Storyboard 是一种为其所包含的时间线提供目标信息的容器时间线。 演示图板可以包含任意类型的 Timeline,包括其他容器时间线和动画。 可以使用 Storyboard 对象将影响各种对象和属性的时间线组合成一个时间线树,以便于组织和控制复杂的计时行为。 下面我们来做个demo演示。 我们画个Rectangle,使他能够旋转。 代码: 这里我们给rectangle1一个RenderTransform使他能够旋转,这里设置Angle为0度,以CenterX和CenterY=0为中心点旋转。我们要使他旋转就要给他一个事件,
阅读全文
摘要:画布 Canvas画布 它的作用域是: 定义一个区域,在该区域中可以使用相对于 Canvas 区域的坐标显式定位子元素。 Canvas 具有默认值为零的 Height 和 Width 属性,除非它是可自动调整其子元素大小的元素的子元素。Canvas 的子元素从不会调整大小,它们只是位于指定的坐标处。这为不需要或不希望使用固有的大小约束或对齐方式的情况提供了灵活性。如果希望自动调整子内容大小并将其对齐,通常最好使用 Grid 元素。 ZIndex 属性确定共享相同坐标空间的子元素的显示顺序。如果一个子元素的 ZIndex 值较高,则表明此元素将显示在具有较低值的另一个子元素之上。 注意:
阅读全文
摘要:图片剪切 今天我要实现在图片上剪切我们想要的图形。 首先新建一个WPF应用程序。 我们在图片上实现剪切,那一定要用到Image控件了。用到Image的剪切属性Clip。 下面我们先截一个椭圆。 效果如图:image.Clip下有6个可画的图形。1、CombinedGeometry 表示由两个 System.Windows.Media.Geometry 对象组合定义的二维几何形状。2、GeometryGroup 表示由其他 System.Windows.Media.Geometry 对象组成的复合几何图形。3、LineGeometry 表示线条的几何图形。4、PathGeometry 指定用于生
阅读全文