在正文开始以前须要介绍一我的:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情。最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF 。听到博客名字就懂这我的有多伟大了吧。他以相似微博式的150字简短语言来天天更新一条WPF和C#重要又容易被遗忘的知识。Follow他的博客也有一段日子了,很但愿可以分享给你们。html
本系列我不只会翻译他的每个tip,也会加入本身开发之中的见解和看法,但愿可以以更贴近的语言来展现大师的风采。本系列我但愿本身也能和他同样坚持下来,天天的进步才能促成伟大。前端
若是你们更想了解这个伟大的程序员,这个是访谈连接,他在访谈中有谈到本身平生和对编程相关学习的见解,我以为对你们会帮助很大,有时间后面会出一篇翻译这个访谈的文章供你们阅读,但愿你们可以关注。linux
在这里郑重说明.该系列是基于Sean Sexton先生的英文博客, Sean Sexton拥有所有版权和撤销权利。程序员
前文:<1-7>WPF, 渲染, 矢量, 布局, 样式, 模板, 命令 express
[小九的学堂,致力于以平凡的语言描述不平凡的技术。如要转载,请注明来源:小九的学堂。cnblogs.com/xfuture]编程
#8. Xaml和Code Behindwindows
WPF应用是由前端代码Xaml(可扩展应用程序标记语言)和后台代码(托管代码)组成。标记性语言Xaml定义了UI的布局和外观,后台定义了行为和逻辑。WPF技术实现了UI和后台逻辑的分离。
Xaml是一个基于Xml的声明式标记语言编写的。Xaml中组织了全部的控件,以及他们的位置和父子关系。后端.cs托管代码描述了运行时UI的逻辑和行为。在编译阶段xaml和xaml.cs会编译为一个class, 因此xaml.cs你能够看出是patical的。后端
下面代码是一个Xaml布局的样例:浏览器
1 <Grid> 2 <StackPanel> 3 <Button Content="Save" Height="23" Name="btnSave" Width="75" Click="btnSave_Click" /> 4 <Button Content="Load" Height="23" Name="btnLoad" Width="75" Click="btnLoad_Click" /> 5 </StackPanel> 6 </Grid>
#9. 标记性语言的优点app
使用标记性语言Xaml和后台代码Xaml.cs模型开发比一切都定义在代码中有着不少的优点。使用Xaml的好处有:
1. 能够在不影响控件行为的状况下更改用户界面的样式和用户体验。
2. 设计人员能够和开发同时工做,一个负责Xaml作用户界面, 一个负责撰写后台逻辑。分工两不误。
3. 微软提供了强大的设计工具Expression Design和Blend, 使用工具能够免写代码, 设计的界面能够直接导出成Xaml.
4. Vs2013已经和Blend作了很好的集成,能够更高效率的作设计和开发。
#10. 基于Page的页面导航
WPF应用程序能够用一些pages的集合以及其页面导航机制来进行构建。和WindowsForm的文档流式的模型不一样,它拥有一个主窗体和一个能够弹出的提醒窗口。
若是想要建立一个基于Page的WPF程序,你须要定义一个Page来代替传统的Window:
<Page x:Class="WpfApplication7.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Title="Page1"> <Grid> <Label Content="This is a page, not a window." Height="28" HorizontalAlignment="Left" Margin="52,75,0,0" Name="label1" VerticalAlignment="Top" /> </Grid> </Page>
同时你须要指定app的starturi为该page
<Application x:Class="WpfApplication7.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="Page1.xaml"> </Application>
此时你便拥有了一个基于Page导航的WPF应用程序。
#11. WPF vs Silverlight vs ASP.NET
WPF, Silverlight, ASP.NET是微软开发的三大平台。下面列出三种平台各自的特色
WPF:
1. 开发Windows应用程序
2. 以最丰富的用户控件和windows特定功能构建的客户端用户界面。
3. 只能运行在Windows上
4. 须要完整的.net framework支持。
Silverlight:
1. 开发运行在Web端
2. 轻量客户端,丰富的UI控件,相似于WPF客户端呈现
3. 须要安装Silverlight插件在浏览器上
4. Silverlight的Moonlight版本能够在linux上运行
5. 第一次加载时须要安装SL插件。
ASP.NET:
1. 开发Web应用程序
2. 轻量客户端,有着通用的Web控制
3. 能够在服务端运行,也能够运行在全部支持HTML的客户端,包括移动设备的浏览器
4. 不须要在客户端安装插件
#12. 在3D硬件加速应用中使用Direct3D
虽然WPF提供3D绘制,可是3D应用中仍是须要Direct3D来进行3D图形的绘制以呈现其最大性能。
并且WPF 4.0是基于DirectX9.0, 因此并不支持Direct3D 10 和 Direct3D 11。
#13. WPF的版本记录
虽然下面列出WPF版本的历史记录和相对应的VS版本。因为WPF是.NET Framework框架一部分,因此版本号是跟着.NET Framework的。下面就是其记录:
.NET Framework 3.0 – Nov, 2006
#14. Silverlight and WPF 不一样之处
Silverlight原名叫作WPF/E(WPF/Everywhere), 我的以为原名很拽。经过名字就能够知道SL和WPF遵循相同的编程模型和大部分空间,能够理解为SL是WPF的一个浏览器特殊版本。
核心区别:
1. WPF只运行在WIndows平台
2. WPF须要.NET Framework
3. SL是WPF控件的一个子集
4. SL使用了.NET FRAMEWORK和CLR的子集
WPF独有:
1. 支持流文件 Flow document
2. 支持动态资源 Dynamic resources
3. Merged dictionaries(SL3已有)
4. 重置样式到一个新的FrameworkElement
5. Style继承(SL4已有)
6. 隐式样式TargetType属性(SL5已有)
7. Styles, ControlTemplates, DataTemplate的Triggers
8. Routed commands
9. 自定义标记扩展(Custom markup extensions)(SL5已有)
10. 运行时访问的可视化和逻辑树(Visual Tree 已有 SLSPY工具 也能够看到)
11. 一些WPF独享的控件(AccessText, BulletChrome, ButtonChrome, ContextMenu, Decorator, DocumentPageView, DocumentViewer, GridViewColumnHeader, GridViewRowPresenter, GroupBox, GroupItem, InkCanvas, Menu, MenuItem, PageContent, Ribbon, Separator, StatusBar, TickBar, ToolBar, Track, UniformGrid)
SL独有:
1. 深度缩放(Deep Zoom)
2. 一些SL独享控件( AutoCompleteBox, DataPager, DescriptionViewer, HyperlinkButton, MultiScaleImage, NumericUpDown, ValidationSummary)
更新后续15-21,敬请期待。