1. 关于布局的规则
    • 控件的布局应该由容器来决定,而不是通过自身使用margin之类的东西来控制位置
    • 避免为控件定义明确的尺寸,但应该限定一个可接受的最大及最小尺寸
    • 不要将界面元素设置成与屏幕坐标相关
    • 容器应将有效控件共享给其子控件
  2. WPF不使用物理像素设置尺寸,而使用设备无关单位,该设备无关单位被定义为1/96英寸,即一英寸96个像素,1英寸=2.54cm,对于96DPI的显示设备,长度单位是1格像素,对于120DPI,单位长度是1.25像素,但长度不变都是1/(96*2.54) cm,常说的分辨率是逻辑像素密度,如1024像素*768像素,分辨率最大为物理分辨率,即物理像素密度
  3. WPF窗口只能包含一个控件,原因是由于Window类继承自ContentControl类,WPF中布局由所用容器决定,WPF窗口应该遵循的原则:
    • 不应显示设定控件的尺寸,而应该使控件尺寸适应内容,可以设置最大最小尺寸来限制可接受的尺寸范围
    • 不应使用屏幕坐标指定控件位置,应当由容器决定
    • 布局容器与它的子控件共享可以使用的空间
    • 可以嵌套布局容
  4. 所有WPF布局控件都继承自System.Windows.Controls.Panel,
    • StackPanel:可以把内部的元素在纵向或者横向上紧密排列,形成栈式布局。
    • WrapPanel:可以根据布局的大小(窗口大小)自动调整控件的位置
    • DockPanel沿一条边缘线来拉伸所包含的控件,这个控件有个最后一个内容控件实现填充所有剩余部分的功能,使用LastChildFill=True属性
  5. 如果有一颗稠密的嵌套元素树,可以通过View|Other Windows|Document Outlline菜单项显示该窗口
  6. Grid面板在预定义的行和列中放置元素,而WrapPanel和StackPanel面板放置元素时会隐式的创建行和列,Grid面板支持三种设置尺寸的方式:
    • 绝对设置尺寸方式,使用设备无关单位设置确切的尺寸,这是最无用的策略
    • Auto,自动设置尺寸方式,最常用,<ColumnDefinition width="Auto">表示匹配列中最宽元素的长度
    • *号,按比例设置尺寸方式,单元格会按比例增加
    • XAML中Grid.ColumnSpan 与Grid.RowSpan: 设置Grid中的控件占用的行数或者列数,用代码Grid.SetColumnSpan和Grid.SetRowSpan可以实现相同功能
  7. 共享尺寸组:使一行或一列 与其他行或列的尺寸相匹配,使用SharedSizeGroup创建共享组
  8. WPF 编程中最常用的标记扩展是支持资源引用的标记扩展(StaticResource 和 DynamicResource)以及支持数据绑定的标记扩展 (Binding)。
    • StaticResource 通过替换已定义资源的值来为属性提供值,key是xaml中定义的资源的key

      <object property="{StaticResource key}" .../>

    • DynamicResource 通过将值推迟为对资源的运行时引用来为属性提供值

WPF 基础的更多相关文章

  1. WPF基础到企业应用系列6——布局全接触

    本文转自:http://knightswarrior.blog.51cto.com/1792698/365351 一. 摘要 首先很高兴这个系列能得到大家的关注和支持,这段时间一直在研究Windows ...

  2. WPF 基础到企业应用系列索引

    转自:http://www.cnblogs.com/zenghongliang/archive/2010/07/09/1774141.html WPF 基础到企业应用系列索引 WPF 基础到企业应用系 ...

  3. WPF笔记(1.1 WPF基础)——Hello,WPF!

    原文:WPF笔记(1.1 WPF基础)--Hello,WPF! Example 1-1. Minimal C# WPF application// MyApp.csusing System;using ...

  4. C# WPF基础巩固

    时间如流水,只能流去不流回. 学历代表你的过去,能力代表你的现在,学习能力代表你的将来. 学无止境,精益求精. 一.写作目的 做C# WPF开发,无论是工作中即将使用,还是只应付跳槽面试,开发基础是非 ...

  5. WPF基础知识、界面布局及控件Binding(转)

    WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...

  6. WPF基础知识、界面布局及控件Binding

    WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...

  7. WPF 基础面试题及答案(一)

    一 · WPF由哪两部分组成? wpf 由两个主要部分 组成:引擎和编程框架. 1 引擎.wpf引擎是基于窗体的应用程序 图形 视频 音频和文档提供了一个单一的运行时库.重要的是WPF基于矢量的呈现引 ...

  8. WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)

    一. 摘要 首先圣殿骑士非常高兴这个系列能得到大家的关注和支持.这个系列从七月份開始到如今才第七篇,上一篇公布是在8月2日,掐指一算有二十多天没有继续更新了,最主要原因一来是想把它写好,二来是由于近期 ...

  9. WPF基础学习笔记整理 (九) 资源

    基础知识: WPF的资源是一种保管一系列有用对象的简单方法,方便于重用. WPF UI元素的Resources属性,都是继承自FrameworkElement列,且其类型为ResourceDictio ...

  10. WPF基础学习笔记整理 (八) 命令

    基础知识: 命令是应用程序的任务,并跟踪任务是否能够被执行. 命令不包含执行应用程序任务的代码. 命令是比事件更高级的元素.默认的命令目标是当前获得焦点的元素. 良好的Win应用程序,应用程序逻辑不应 ...

随机推荐

  1. Hessian Spirng实例

    Spring实例 之前,我们做了很简单的纯Hessian的调用,虽然到此已经能够满足远程调用的需求了,但是我听说spring也能够访问hessian的远程服务,研究了一番,废话不多说,直接上示例. 业 ...

  2. 基础apache命令

    在启动Apache服务之前,可以使用下面的命令来检查配置文件的正确性. C:\Apache2.2\bin> httpd  -n  Apache2.2  -t 还可以通过命令行控制Apache服务 ...

  3. C# 3.0的新特性

    自动属性. 之前定义属性的步骤: private filed + public property. 现在的形式:int id{get;set;}. 可以分别设置get/set的保护级别(protect ...

  4. 洛谷P1962 斐波那契数列(矩阵快速幂)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...

  5. Java NIO(七)管道

    Java NIO 管道是两个线程之间的单向数据连接.Pipe有一个source通道和sink通道(内部类).数据会被写到sink通道,从source通道读取. 给一张Pipe通道的原理图: 创建管道: ...

  6. uploadifive上传文件

    uploadifive是一个款基于H5的上传文件的插件.优点是,可以在PC端,也可以在手机上进行操作.缺点是,IE9以下的兼容性不好. View: <!DOCTYPE html> < ...

  7. 安装全局可执行的gulp

    gulp需要作为项目的开发依赖(devDependencies)安装,全局安装了gulp是无法执行项目的,不单单需要全局安装 gulp:npm install gulp -g,也需要作为项目的开发依赖 ...

  8. servletconfig和servletcontext学习

    servletconfig java.lang.String getInitParameter(java.lang.String name)  //根据参数名获取参数值 java.util.Enume ...

  9. webpack——bable-loader,core,preset,编译es6

    //文件夹,在命令行中npm init 之后可以一直回车,答y 出现文件 然后安装bable npm install -save-dev babel-loader babel-core 文件 然后我们 ...

  10. easyUI datagarid单元格动态合并

    第二列根据第一列合并,第三列根据第二列合并.层级关系. /* * tableID表格的id * colList要合并的字段例如:"overcount,totalcount" */ ...