WPF
聂14昊51
努力+耐心
展开
-
WPF高级教程(十八)行为
介绍在讲解到样式的时候我们说,样式是为了一系列元素共享一些属性而存在的,归根结底是为了复用代码和逻辑,而我们学习了触发器之后,发现我们可以用触发器写一些简单的逻辑到样式中,但是这种简单的逻辑有时候远远不够。当我们要实现一堆元素支持在Cancas上面拖放,停靠,缩放等功能的时候,触发器就显得不是那么够用了。我们在复用代码的时候,有下面三种方法,他们互相补充,构建了WPF的属性重用架构,在合适的...原创 2020-03-16 22:55:02 · 2232 阅读 · 3 评论 -
WPF高级教程(十七)触发器
使用触发器触发器可以让我们的界面可以自动化完成一些简单的样式改变,如鼠标放上去变色等。在样式中添加触发器就是往 Style.Triggers 集合里面添加触发器,只要是派生自 TriggerBase 的实例都是可以添加到集合中的,有下面几类注意,我们可以为任何依赖项属性设置一个触发器,我们看下面的例子<Style TargetType="Button"> <St...原创 2020-03-16 22:13:47 · 754 阅读 · 0 评论 -
WPF高级教程(十六)样式
概念样式是可以应用于元素的一系列属性值的集合。样式期望使用一份xaml代码来设置一系列元素的细节,比如内外边距,字体颜色等。样式类似于CSS但是要比CSS更加强大,强大之处在于:可以设置依赖项属性,使其可以控制控件行为支持触发器可以使用模板重新定义控件的内置外观定义和设置样式定义样式<Window.Resources> <Style x:Key="B...原创 2020-03-16 21:53:14 · 840 阅读 · 0 评论 -
WPF高级教程(十五)对象资源
概念对象资源是使用代码定义的一系列可以重用的对象,包括 画刷,样式,模板 等。WPF允许在代码中以及在xaml中各个位置定义对象资源。资源集合在FrameworkElement中定义了一个Resources属性,该属性使用Resource Dictionary类的实例填充,用于存储元素上的资源。根据我们之前学习的体系结构,定义在FrameworkElement也就表明了所有的WPF元素都具有...原创 2020-03-10 22:40:16 · 738 阅读 · 0 评论 -
WPF高级教程(十四)程序集资源
分类WPF中的资源分为两类:程序集资源对象资源其中,程序集资源指的是软件开发中用到的图片,声音,xml文件等资源,这些资源被添加到项目中之后会被嵌入到编译过得程序集中,会被编译成二进制数据。而对象资源是一些.NET对象,希望能够一次定义多次使用,包括画刷,样式,模板等。本文我们将着重介绍程序集资源,下一文我们介绍对象资源程序集资源介绍应用程序资源包括 图片,音频等应用程序需要使...原创 2020-03-10 22:34:23 · 1212 阅读 · 0 评论 -
WPF高级教程(十三)命令
概念命令是事件更高层次的抽象。我们在WinForm的开发中,一个事件处理程序就是一个命令,而如果我们很多事件都对应着一套处理程序,我们会将处理程序提出去,处理程序就相当于一个命令,而在WPF中,原声提供了一套更高抽象的命令供我们使用,我们将要学的就是这个抽象出来的命令模型。缺陷WPF的命令模型的优势我们在之后的讲解中大家会慢慢感受到,我们先讲讲缺陷,也就是WPF的命令不能做什么,如果接到一个...原创 2020-03-05 08:53:54 · 1174 阅读 · 0 评论 -
WPF高级教程(十二)元素绑定
绑定的限制需要注意:绑定只能写在依赖项属性上。原因我们在上一文中讲过:源数据可以是任意数据,而目标必须是依赖项属性,所以绑定只能写在依赖项属性。元素绑定的好处如果我们想要实现一个滑动条,滑动的值显示再后面的TextBox中,我们的实现方法有下面两种:之前的方法:在滑动条改变的事件中改变TextBox的值使用绑定直接在xaml中指定滑动条和TextBox的对应关系很明显,在xaml中...原创 2020-03-04 09:47:36 · 679 阅读 · 0 评论 -
WPF高级教程(十一)绑定说明
概念绑定是一种关系,告诉目标对象使用原对象的一些信息设置其属性值。分类绑定关系分为很多种,但是本质上来说是 目标对象的属性 和 源对象的属性 进行绑定。我们这里我们要求:目标对象的属性必须是依赖项属性(这点很好理解,依赖项属性提供了让对象可以根据数据源改变的能力)源对象属性可以是任何内容,包括依赖项属性,其他WPF元素,甚至是ADO.NET数据对象通过上面的说明我们发现,绑定这块...原创 2020-02-26 16:56:30 · 500 阅读 · 0 评论 -
WPF高级教程(十)WPF程序的生命周期
介绍就像每一个窗口对应一个Window类一样,每一个WPF的应用程序对应一个Application类生命周期创建WPF程序中,Application类的创建是由App.xaml中完成的,具体的代码如下<Application x:Class="TestProject.App" xmlns="http://schemas.microsoft.com/winf...原创 2020-02-26 15:34:24 · 2418 阅读 · 0 评论 -
WPF高级教程(九)控件
定义能够与用户交互的元素。继承自System.Windows.Control,基类提供以下能力:设置对齐方式设置Tab顺序背景,前景,边框文本内容尺寸和字体注意在有时候,我们会在描述的时候说:这是界面上的一个控件,这是界面上的一个元素,那么,控件和元素有什么关系和区别呢?实际上,界面上的可视化的内容就是元素,而能够接受焦点并且能与用户交互的元素叫做控件,所以元素的概念包含控件。这点...原创 2020-02-26 15:14:41 · 2095 阅读 · 0 评论 -
WPF高级教程(八)专题:事件
概述除了路由事件,WPF中还有非路由事件,这个专题介绍一下WPF中所有的事件。都有哪些事件生命周期事件,元素的初始化,加载,卸载时发生鼠标事件键盘事件手写笔事件多点触控事件下面就逐个介绍这些事件,大家可以先做一个简单的了解,当要深入使用这些事件的时候查询这篇文章即可生命周期事件一个元素创建流程大致是这样:首先需要解析Xaml,然后初始化,再渲染样式,应用布局和绑定。Xa...原创 2020-02-26 11:07:17 · 2567 阅读 · 0 评论 -
WPF高级教程(七)路由事件
介绍与依赖项属性一样,路由事件是WPF对于传统.NET事件的升级,使得事件拥有更强的传播能力。定义,注册和包装// 我们来看一个Click事件定义的例子public abstract class ButtonBase : ContentControl{ // 定义路由事件 public static readonly RoutedEvent ClickEvent; ...原创 2020-02-26 10:42:29 · 841 阅读 · 0 评论 -
WPF高级教程(六)依赖项属性
概述依赖项属性是属性的一种全新的实现。通过对原有属性的升级,依赖项能够实现数据绑定,动画或者WPF的其他进阶功能。通过对于依赖项属性的封装,使得依赖项属性的使用与普通属性一样,这样既兼容了老的使用方法,又把WPF的新特性带到了普通的WPF程序中。功能每个依赖项属性都支持 更改通知和动态值识别,这也是依赖项属性的特点和基础实现定义依赖项属性只能为依赖对象(继承自Dependency...原创 2020-02-26 10:29:11 · 1174 阅读 · 0 评论 -
WPF高级教程(五)专题:Grid
前言Grid是WPF中最强大的布局容器,值得我们专门使用一个专题来了解Grid的使用。使用行列定义<Grid ShowGridLines="True"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDe...原创 2020-02-26 09:20:24 · 1294 阅读 · 0 评论 -
WPF高级教程(四)布局
布局原则空间的尺寸可以自适应。(要实现这样的效果需要不显式的指定控件尺寸,而是设置控件尺寸的最大最小值)不设置绝对定位,使用相对定位(比如使用margin就是相对定位而非绝对坐标)布局控件能为子控件合理分配尺寸布局控件可以嵌套布局控件类关系布局控件都派生自Panel(类关系可以在之前的文章中找到)。Panel是一个抽象类,提供了一些公共属性。注意1:当我们在实际工作中,会出现点...原创 2020-02-26 09:11:43 · 1148 阅读 · 0 评论 -
WPF高级教程(三)XAML
语言简介XAML(Extensible Application Markup Language) 是用来写界面的XAML是大小写敏感的WPF是前后端分离的,前端用XAML实现,后端用C#写(注意能用XAML写的都能用C#实现,但是用XAML更加直观,我们在本篇教程里,一般只说明使用XAML的实现,如果大家需要在后台更改界面,可以自行搜索XAML对应的C#实现)命名空间格式xmlns...原创 2020-02-26 08:38:54 · 2203 阅读 · 0 评论 -
WPF高级教程(二)体系结构
体系结构控件,窗口,基础形状,样式等都在PresentationFramework和PresentationCore中依赖项属性在WindowsBase中提供milcore 托管图形,与Direct3D集成。渲染核心,不仅应用于WPF,也应用于系统界面的渲染WindowsCodecs 图像处理底层APIDirect3D 最低级图形渲染API,它是DirectX的一部分User32 ...原创 2020-02-20 16:35:22 · 993 阅读 · 1 评论 -
WPF高级教程(一)概述
WPF是什么WPF是基于Windows的用户界面框架,划重点:基于Windows,用户界面框架。需要注意的是,WPF仅仅是有关于用户界面渲染的技术,而后台的开发,与系统的交互等都需要.NET Framework 的支持。为什么写这一系列教程在写这一系列教程之前,我去逛了逛论坛,对WPF一如既往的唱衰之声,而其核心问题,就是它不能跨平台,那么WPF究竟还有没有其存在的价值呢?我在很多城市有...原创 2020-02-19 22:40:37 · 4275 阅读 · 0 评论