总结下学习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. python升级安装后的yum的修复

    升级python版本号后,执行yum # yum -y install openssl 提演示样例如以下: There was a problem importing one of the Pytho ...

  2. NuGet管理工具安装

    安装完成后VS重启即可

  3. SQLite集成与用法

    本文转载至 http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/fra ...

  4. python 基础 7.4 os 模块

    #/usr/bin/python #coding=utf8 #@Time   :2017/11/11 3:15 #@Auther :liuzhenchuan #@File   :os 模块.py im ...

  5. 利用python进行数据分析之pandas入门

    转自https://zhuanlan.zhihu.com/p/26100976 目录: 5.1 pandas 的数据结构介绍5.1.1 Series5.1.2 DataFrame5.1.3索引对象5. ...

  6. LoadRunner hits per second 深入理解

    Hits per Second Graph The Hits per Second graph shows the number of HTTP requests made by Vusers to ...

  7. 【BZOJ1336】[Balkan2002]Alien最小圆覆盖 随机增量法

    [BZOJ1336][Balkan2002]Alien最小圆覆盖 Description 给出N个点,让你画一个最小的包含所有点的圆. Input 先给出点的个数N,2<=N<=10000 ...

  8. Regularization: how complicated the model is? Regularization, measures complexity of model 使预测准确、平稳 predictive stable

    http://www.kdd.org/kdd2016/papers/files/rfp0697-chenAemb.pdf https://homes.cs.washington.edu/~tqchen ...

  9. apache功能优化

    隐藏Apache版本等敏感信息 $ grep Server /usr/local/httpd/conf/extra/httpd-default.conf|grep -v "#" 修 ...

  10. jQuery 3D旋转展示焦点图

    在线演示 本地下载