总结下学习WPF的笔记,方便查阅 
1   编译 
添加程序集引用:WindowsBase.dll,PresentationCore.dll,PresentationFramework.dll 
2  布局 Layout 
Grid 
<Grid VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True" > 
        <Grid.RowDefinitions> 
            <RowDefinition/>   <RowDefinition/> 
        </Grid.RowDefinitions>      
<Button Width="125"  Grid.Row ="0" >Add Column</Button> 
<Button Width="125" Grid.Row="1" >Delete Column</Button> 
</Grid> 
DockPanel 
<DockPanel LastChildFill=”true”> 
<Button Width="125" DockPanel.Dock=”Top” >Add Column</Button> 
<Button Width="125" >Delete Column</Button> 
</DockPanel> 
StackPanel 
<StackPanel HorizontalAlignment="Left" >  
<Button Width="125"  >Add Column</Button> 
<Button Width="125" >Delete Column</Button> 
</StackPanel> 
Canvas 
<Canvas Background=”Yellow”> 
<Button Width="125"  >Add Column</Button> 
<Button Width="125" >Delete Column</Button> 
</Canvas> 
3  控件 Control 
WPF的控件模型 WPF中几乎任何的控件(Element)都可以作为一个容器存在,在它的Content属性中包含其他任何你想要显示的内容,不仅仅是字符串。 
这个特性有点像ASP.NET中GridView的Template列,可以在模板列中放任何控件。 
1) Button <Button Width="125"  >Add Column</Button> 
2)<TextBox Height="23" Name="textBox1" Width="120" /> 
3) TextBlock <TextBlock FontSize="18"  FontStyle="Italic"> Hello, world! </TextBlock> 
4) ComboBox 
<ComboBox Height="23" Name="comboBox1" Width="120"> 
            <ComboBoxItem>A</ComboBoxItem> 
            <ComboBoxItem>B</ComboBoxItem> 
</ComboBox> 
5)  ListBox 
<ListBox Height="100" Name="listBox1" Width="120"> 
           <ListBoxItem>A</ListBoxItem> 
           <ListBoxItem>B</ListBoxItem> 
  </ListBox>

4 样式Style ,资源Resource 
样式 
1) inline 样式 内联样式 
<Button Name="btnOK"> 
            <Button.Style> 
                <Style> 
                    <Setter Property="Button.FontSize" Value="32"></Setter> 
                    <Setter Property="Button.FontWeight" Value="Bold"></Setter> 
                </Style> 
            </Button.Style> 
        </Button>

2) named样式 命名样式 
<Window.Resources>   
<Style x:Key ="MyStyle">   
<Setter Property ="Button.FontSize" Value ="20"/>   
  <Setter Property ="Button.Background">   
  <Setter.Value>   
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">   
           <GradientStop Color="Green" Offset="0" />   
           <GradientStop Color="Yellow" Offset="0.25" />   
           <GradientStop Color="Pink" Offset="0.75" />   
          <GradientStop Color ="Red" Offset="1" />   
       </LinearGradientBrush>   
     </Setter.Value>   
</Setter>   
</Style>   
</Window.Resources>   
使用命名资源的方法 
<Button  Name="btnClickMe" Height="80" Width = "100" 
Style ="{StaticResource MyStyle}"

注意:别忘记在窗体的声明代码引入命名空间 
xmlns:x="clr-namespace:System;assembly=mscorlib"

资源 添加页面资源 
<Window.Resources> 
       <SolidColorBrush x:Key="Foo" Color="Green"></SolidColorBrush> 
       <x:String x:Key="Hello">Hello,World</x:String> 
   </Window.Resources> 
定义应用程序资源的方式如下 
<Application.Resources> 
       <SolidColorBrush x:Key="Foo" Color="Green"></SolidColorBrush> 
       <x:String x:Key="Hello">Hello,World</x:String> 
   </Application.Resources> 
读取代码 
Brush b=(Brush)this.Resources[“Foo”]; 
String s=(string) this.Resources[“Hello”]; 
也可以用FindResource 和TryFindResource,前者找不到资源会抛出异常,后者找不到资源返回null 
资源范围:Application 应用程序资源,Page/Windows窗体资源 
应用程序资源适用于当前项目的所有窗体,窗体资源适用于它所在的窗体 
WPF的资源可以包含所有的任意CLR对象,该对象必须要有一个默认的构造函数和独立的属性。 
资源的加载形式 
Static资源 静态资源,定义在xmal文件中 
Dynamic资源 动态资源 在CS文件中定义

5 数据绑定 Data Binding 
举例,ComboBox绑定系统字体 
<ComboBox ItemsSource=”{ x:Static Fonts.SysetemFontFamilies }”/> 
注意要加xmlns:x="clr-namespace:System;assembly=mscorlib" 
绑定自定义对象 可以直接在资源中定义对象,然后绑定给控件 
如果要创建变化通知的CLR绑定对象,该对象必须实现INotifiyPropertyChanged。可以理解为当数据值变化后,绑定数据值的element自动更新,当element的值更新后,对象的绑定对象值也会更新。

6 XAML的编译过程 
对于一个Foo.xaml文件 
1 调用解析器解析Foo.xaml ,使用System.Xml.XmlTextReader读取并解析 
2 markup编译器调用Baml writer在obj\release目录中产生Foo.baml 
3 markup编译器生成一个partical类保存到Foo.g.cs文件中 
如果需要反编译WPF的项目时,需要使用插件Reflector.BamlViewer.dll 
 
如图,WPF初试化时加载界面文件XAML文件,界面文件被编译成Baml,这个文件是二进制的。 
 
通过BamlViewer插件,可以还原界面XAML文件。

对WPF研究的很肤浅,目前也只限于把服务器类的程序(比如WCF服务器端)驻留在WPF中,体会一下它的编程模型。先开始会用它做些项目的小工具,数据维护工具之类的应用,等把它研究透了,并且小组的成员都会这项目技术,再应用于实际的项目。

http://www.cnblogs.com/JamesLi2015/archive/2010/02/27/1674822.html

WPF开发学习笔记(转)的更多相关文章

  1. WPF开发学习笔记

    1.命名规范: 插件名称统一以:CI.Client.Plugins.SYS.+TableName   eg:CI.Client.Plugins.SYS.EnterPrise 2.插件文件目录: 3.D ...

  2. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  3. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  4. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

  5. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  6. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  7. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  8. 步步为营 SharePoint 开发学习笔记系列总结

    转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...

  9. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

随机推荐

  1. SpringBoot启动流程分析(二):SpringApplication的run方法

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  2. Github的基本功能:

    作者:Fadeoc Khaos链接:http://www.zhihu.com/question/20070065/answer/30521531来源:知乎著作权归作者所有,转载请联系作者获得授权. G ...

  3. 多媒体开发之---如何确定slice_header slice_type 的位置

    引用网友的问答:我找到0x000001 NAL的开头了,请问如何确定slice head的位置,继而得出slice_type呢?Nal unit后紧跟的就是slice head吗?标准里的循环让人看得 ...

  4. HTML5,不仅仅是看上去非常美(第二弹:打造最美3D机房)

    前言 近期项目开发任务告一段落,刚好有时间整理这大半年的一些成果.使用html5时间还不久,对js的认识还不够深入.没办法,曾经一直搞java,对js的一些语言特性和概念一时还转换只是来. 上一篇第一 ...

  5. iOS判断为空或者只为空格

    本文转载至 :http://www.cnblogs.com/superhappy/archive/2012/11/08/2761403.html 经常有需求 要判断不能为空,后台老是鄙视不做非空判断的 ...

  6. Shell parameter expansion

    使用sh写一些小型的脚本会使工作更加简单.有部分内容可能大家都比較陌生(至少我是这样). 就是变量有关的參数展开,以下就是一些简单的描写叙述和使用方法.能够使代码更加简洁 展开运算符 替换运算 ${v ...

  7. Java for LeetCode 084 Largest Rectangle in Histogram【HARD】

    For example, Given height = [2,1,5,6,2,3], return 10. 解题思路: 参考Problem H: Largest Rectangle in a Hist ...

  8. em、pt、px和百分比

    浏览器默认的字体大小为100%=16px=12pt=1em px像素(Pixel):是固定大小的单元.相对长度单位.像素px是相对于显示器屏幕分辨率而言的.一个像素等于电脑屏幕上的一个点(是你屏幕分辨 ...

  9. 使用valgrind进行内存泄漏和非法内存操作检测

    valgrind是一个强大的工具,最常用的功能是用它来检测内存泄漏和非法内存的使用.要想让valgrind报告的更加细致,请使用-g进行编译. 基本命令如下: $ valgrind --tool=me ...

  10. 2014暑假ACM训练总结

    2014暑假ACM训练总结报告 匆匆之中,一个暑假又过去了,在学校训练的这段日子真的是感觉日子过得好快啊! 时光如箭,日月如梭! 匆忙的学习之中一个暑假就这样结束了,现在就来写一些总结吧,供自己以后阅 ...