数据层(Database,Oracle等)

业务逻辑层(Service,Data Access Layer,WCF)

表示层(WPF,Win Form,ASP.net,Silverlight)

【WPF开发方法论】

AS-IS:UI事件驱动程序运行(Win Form)——TO-BE:数据驱动程序运行并显示在UI上(WPF)

XAML:WPF技术中专门用于设计UI的语言。

逻辑树(logical tree):不考虑控件内部的组成结构,只观察由控件组成的“树”。

可视元素树(visual tree):连控件本身的树也考虑在内,称之为“可视元素树”。

Visual Tree 包含 Logical Tree,visual tree的范围更大。

【UI布局】

Grid适用的 场合

1. UI布局大框架的设计。

2. 大量UI元素需要成行或者成列对齐的情况。

3. UI整体尺寸改变时,元素需要保持固有的高度和宽度比例。

4. UI后期可能有 较大的变更或扩展。

【MVVM】

Model-View-View Model

View可以绑定Behavior/Comand来调用ViewModel的方法。Command是View到ViewModel的单向通行,通过实现IComand接口来实现绑定,让View触发事件,ViewModel来处理事件,以解决事件绑定功能。

ViewModel(视图模型)主要包括界面逻辑和模型数据封装,Behavior/Command事件响应处理,绑定属性定义和集合等。它是View和Model的桥梁,是对Model的抽象

Model与MVC模式一样,Model用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。它具有对数据直接访问的权利,例如对数据库的访问,Model不依赖于View和ViewModel

【XML Binding】

XPath使用“@”符号加字符串表示的是XML元素的Attribute,不加@符号的字符串表示的是子级元素。

【Binding】

一般来说,

Source- 程序内部元素

Target-GUI上的外部元素

Binding数据验证,数据转换。

路由事件(Routed Event)路由事件的事件拥有者和事件的相应者之间则没有直接的显式订阅关系,事件的拥有者则只负责激发事件,事件将有谁相应它并不知道,事件的响应者则有事件的监听器,针对事件进行监听,当有此类事件传递至此事件响应者就使用事件处理器来相应事件并决定此事件是否继续传递。

什么样的对象才能作为Binding的目标来使用?——依赖属性与依赖对象。

必须要使用依赖属性于依赖对象的原理是什么?为何其他的对象不可以实现Binding

依赖对象(Dependency Object)对象在被创建的时候,并不包含用于存储数据的空间(即字段所占用的空间)、只保留在需要用到数据时能够获得默认值、借用其他对象数据或实时分配空间的能力。

依赖属性(Dependency Property)实时分配内存空间,用来检索真正的属性值(存储的是由CLR包装器名hash code和宿主类型名hash code执行异或运算的结果),而并非存储实际属性值。

(实际属性值是存储于全局的Effective Value Entry数组中)

为什么WPF在性能上还不尽人意?

WPF借依赖属性的算法(时间)换取了对内存(空间)的节省。?

可传递的消息模型——WPF路由事件

当一个路由事件被激发后是沿着Visual Tree传递的,只有这样,藏在Template里的控件才能把消息送出来。

创建自定义路由事件

(1) 声明并注册路由事件。

EventManager.RegisterRoutedEvent()方法的四个参数

路由事件的名称

路由事件策略(Bubble, Tunnel, Direct)

指定事件处理器的类型

路由事件的宿主(拥有者)类型

(2) 为路由事件添加CLR事件包装器。

(3) 创建可以激发路由事件的方法。

RoutedEventArgs 属性 Handled——true则事件不再向下传递,false事件继续向下传递

属性 Source ——Logical Tree上的消息源头

属性 OriginalSource——Visual Tree上的消息源头

附加事件:没有界面渲染功能的宿主对象,可以使用附加事件与其他对象进行沟通

命令与事件的区别:事件不具有约束力,而命令是具有约束力的。(消息的接收者如何响应事件?)

WPF的命令实际上就是:实现了ICommand接口的类,平时使用最多的是RoutedCommand类

当一个命令到达目标后具体执行的业务逻辑不是由命令决定的,而是外围的CommandBinding捕获到命令目标受命令激发而发送的路由事件后在其Executed事件处理器中完成。

关于“自定义Command”部分没有读懂。如何在XAML和partial class中定义user control

形而上者,谓之道。形而下者,谓之器。

在我们能够观察到的世间万物的形象之上抽象的结果就是思维,而形象之下掩盖的则是其本质。

形而上者谓之道——基于现实世界对万物进行抽象,封装(面向对象思想)以及对象之间最优组合关系(设计模式思想)

形而下者谓之器——我们能观察到的世间万物都是物质本质内容的表现形式。

【资源】

四个等级:

1. 数据库资料 ——仓库

2. 资源文件 ——旅行箱

3. WPF对象资源 ——背包

4. 程序变量 ——手中

对象级资源:每个界面元素都可以携带自己的资源并可被自己的子级元素共享。

Pack URI路径格式:pack://application,,,[/程序集名称;][可选版本号;][文件夹名称/]文件名称

例:pack://application:,,,/Resources/Images/topBanner.jpg

WPF Template分为两大类

1. ControlTemplate 控件的外衣

2. DataTemplate 数据的外衣

深入浅出WPF笔记的更多相关文章

  1. 《深入浅出WPF》笔记——绘画与动画

    <深入浅出WPF>笔记——绘画与动画   本篇将记录一下如何在WPF中绘画和设计动画,这方面一直都不是VS的强项,然而它有一套利器Blend:这方面也不是我的优势,幸好我有博客园,能记录一 ...

  2. 《深入浅出WPF》笔记——事件篇

    如果对事件一点都不了解或者是模棱两可的话,建议先去看张子阳的委托与事件的文章(比较长,或许看完了,也忘记看这一篇了,没事,我会原谅你的)http://www.cnblogs.com/JimmyZhan ...

  3. 《深入浅出WPF》笔记——资源篇

    原文:<深入浅出WPF>笔记--资源篇 前面的记录有的地方已经用到了资源,本文就来详细的记录一下WPF中的资源.我们平时的“资源”一词是指“资财之源”,是创造人类社会财富的源泉.在计算机程 ...

  4. 《深入浅出WPF》笔记——模板篇

    原文:<深入浅出WPF>笔记--模板篇 我们通常说的模板是用来参照的,同样在WPF中,模板是用来作为制作控件的参照. 一.认识模板 1.1WPF菜鸟看模板 前面的记录有提过,控件主要是算法 ...

  5. 《深入浅出WPF》 学习笔记

    <深入浅出WPF> 序言 1. 什么是WPF    2. 为什么要学习WPF 第一章 XAML概览 1. XAML是什么? 2. XAML有哪些优点 第二章 从零起步认识XAML 1. 新 ...

  6. 《深入浅出WPF》重点摘要(—)Binding自动通知机制

    最近因为公司的项目需要用WPF开发,就学习了一下WPF.刚开始只是用到什么就百度什么,虽然功能是实现了,但还是没有弄清楚原理(如果不弄清原理,会感觉很心虚,整个人会没底气),所以决定找个教程系统地学一 ...

  7. 深入浅出WPF开发下载

    ​为什么要学习WPF? 许多朋友也许会问:既然表示层技术那么多,为什么还要推出WPF作为表示层技术呢?我们话精力学习WPF有什么收益和好处呢,这个问题我们从两个方面进行回答. 首先,只要开发表示层程序 ...

  8. 深入浅出WPF(1)—转(http://liutiemeng.blog.51cto.com/120361/91631/)

    深入浅出WPF(1)——什么是WPF 2008-05-15 19:06:00   小序:   Hi,大家好!几乎两个月没有写技术文章了.这两个月,我在学习WPF.回顾一下两个月的学习历程,有两个感觉— ...

  9. WPF笔记(2.8 常用的布局属性)——Layout

    原文:WPF笔记(2.8 常用的布局属性)--Layout 这一节老没意思,啰里啰唆的尽是些HTML的属性,挑几个好玩的List出来,备忘:Padding与Margin的区别:Margin指控件边界与 ...

随机推荐

  1. asp dotnet core 支持客户端上传文件

    本文告诉大家如何在 asp dotnet core 支持客户端上传文件 新建一个 asp dotnet core 程序,创建一个新的类,用于给客户端上传文件的信息 public class Kanaj ...

  2. Linux 内核 标准 PCI 配置寄存器

    一些 PCI 配置寄存器是要求的, 一些是可选的. 每个 PCI 设备必须包含有意 义的值在被要求的寄存器中, 而可选寄存器的内容依赖外设的实际功能. 可选的字段不被 使用, 除非被要求的字段的内容指 ...

  3. TOJ5705动态序列操作(STL or treap)

    传送门:动态序列操作 在一个动态变化的序列中,完成以下基本操作: (1)插入一个整数 (2)删除一个整数 (3)查找序列中最大的数 (4)查找序列中最小的数 (5)求x的前驱(前驱定义为不大于x的序列 ...

  4. visio基础

    右下角是一个切换文件的按钮 也可以用ctrl+tab键进行切换 页面底部左边是一个页面的增加与切换的几个按钮 这是切换页面不是切换文件 右上角这个按钮是一个功能隐藏的按钮 左上角这个按钮可以自定义快速 ...

  5. 如何设置Linux时间

    \(\color{Black}{文/魂皓轩}\) linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间.当 ...

  6. 0003 HTML常用标签(含base、锚点)、路径

    学习目标 理解: 相对路径三种形式 应用 排版标签 文本格式化标签 图像标签 链接 相对路径,绝对路径的使用 1. HTML常用标签 首先 HTML和CSS是两种完全不同的语言,我们学的是结构,就只写 ...

  7. TCP/IP DNS

    1.概述   域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,提供主机名字和ip地址转换的选路信息,在应用的角度上,DNS的访问通过地址解析器(resolver)完成,在unix中,解 ...

  8. $CH5104\ I-country$ 线性$DP$

    CH Sol ”凸联通块“是什么意思呢? 其实就是图形的左端点先减小再增大,右端点先增大再减小 阶段 考虑到第k行,已经选了i个格子 状态 1.第i行的左端点与右端点 2.这一行的左端点相对于上一行的 ...

  9. 推荐中的多任务学习-YouTube视频推荐

    本文将介绍Google发表在RecSys'19 的论文<Recommending What Video to Watch Next: A Multitask Ranking System> ...

  10. Python 处理Excel内的数据(案例介绍*2)

    (一)案例一介绍 现在有一匹电商产品跟当日销量的数据,如下,总共有上万笔的数据,现在需要统计每个品牌当日的销售量,比如美宝莲今天总共卖出了多少的商品,另外需要统计每个品牌下面的每个子品类当日销售量(品 ...