总结下学习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. Docker入门系列7 动态映射端口port mapping

    为何想要动态映射端口呢? 因为刚开始run启动容器时,并不知道里面需要映射哪些端口,等容器已创建了,想映射端口. 当然可以通过先commit成镜像,然后再次run时指定端口,但会生成中间的镜像,对于有 ...

  2. arcgis10.0 切片并发布服务及验证

    1.切片参考网址:https://jingyan.baidu.com/article/fa4125accc6bef28ac7092d7.html 2.通过下面代码验证  参考网址https://www ...

  3. 如何编译文件(gcc + nasm)

    [0]README 编译文件(nasm + gcc),特别是编译目标文件的依赖文件:本文旨在回顾 gcc 和 nams 编译器的编译命令,以及如果有多个依赖文件该如何编译: [1]编译文件 1.1)编 ...

  4. ASP.NET MVC 相关的社群与讨论区

    ASP.NET MVC 官方论坛  http://forums.asp.net/1146.aspx 台湾微软MSDN论坛 --- ASP.NET 与 AJAX(ASP.NET AND AJAX)讨论区 ...

  5. ios --转载获ipa 的图片资源

      突然想起当初刚学习iOS的时候,就经常通过抓包和提取素材的方式来模仿App,今天就教大家如何一步步提取App的素材! 大家是否有过想要获取别人的素材的想法?看到某些App的资源很不错,很想导出来用 ...

  6. Python学习笔记18:标准库之多进程(multiprocessing包)

    我们能够使用subprocess包来创建子进程.但这个包有两个非常大的局限性: 1) 我们总是让subprocess执行外部的程序,而不是执行一个Python脚本内部编写的函数. 2) 进程间仅仅通过 ...

  7. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程(转)

    很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序也能继续运行.这是因为对MCU烧写固件 的实质就是将程序固件写入到M ...

  8. Java语言基础(回头复习)

    /* 使用变量的时候要注意的问题: A:作用域 变量定义在哪个大括号内,它就在这个大括号内有效. 并且,在同一个大括号内不能同时定义同名的变量. B:初始化值 没有初始化值的变量不能直接使用. 你只要 ...

  9. (转)CentOS 5.5 64bit 编译安装Adobe FlashMediaServer 3.5

    http://download.macromedia.com/pub/flashmediaserver/updates/4_0_2/Linux_32bit/FlashMediaServer4.tar. ...

  10. 【Java 语言生态篇】Junit 测试单元

    01 概述   JUnit是一个由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是白盒测试.JUn ...