由Winform转到WPF的一部分人,很可能忽略掉布局,习惯性的使用固定定位。然而,没有良好的布局,后面界面控件画的再好看,花哨,都不过是鲜花插在牛粪上,很可能始终都是一坨??(呵呵)。

闲话少说,首先说说WPF中最常用,其实功能也最强大的布局——Grid,很多时候,偶们只会注意到其最常用这一特点,而其之强大往往被忽略,其强大之处在于他可以替换到其他大部分布局面板,当然使用起来或许没有那些特种需求布局面板方便。

简例:Grid布局3行3列,行等分,列比例为1:2:3

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
</Grid>

除了使用“*”来自适应,亦可以使用“auto”,两者的不同之处在于,*比例等分【对外】,auto根据内部控件自动调整大小【对内】。【,关于wpf有时界面模糊问题,有属性UseLayoutRounding,将其设为True——自己偶尔在一本书上看到的,叫布局舍入,遇到相同问题的同学,可以试试此法】

——相似布局面板UniformGrid布局【网格布局,用的偏少,有兴趣的童鞋可以玩玩】

布局使用排行老二的应该是StackPanel【个人用的比较多,别人偶就不知道啦】,其就是一个单方向的栈【经典的排队】。

简例:

<StackPanel>
<Button Content="One" />
<Button Content="Two" />
<Button Content="Three" />
<Button Content="Four" />
</StackPanel>

偶常常喜欢将另一个面板与其放到一块——WrapPanel流式布局,偶觉得他们就像TextBlock中的TextWrap属性一样,以是否可以换行加以区分,WrapPanel应该是学生最好理解的一个,毕竟每一个学生写作业,作文啥的一行一行写过来的【,做作业最那个疼啦】。

还有一个比较常用的布局面板就是DockPanel,做过Winform开发应该都知道Winform控件中经常有Dock属性,而这个布局就类似Winform的Dock属性。其就像是家里的一个房间,一些东西靠左边墙放,另一些东西靠右边。

既然决定用wpf,最需要放下的就是使用Canvas布局啦,当然他的存在毕竟还是有其意义的,不过偶好像木有发现。。。。【感谢Sunwayking的提示!关于这个布局面板的性能:我使用布局下包含一个button和一个布局面板,套了20层,与grid相比,差距不大,可能元素还是太少了】,另外想到一个可能用到的地方,自己画控件来打印的时候,需要绝对布局。

最后就是要提一下一个非布局面板的控件——Border,此控件可以说是不是布局面板的布局控件,经常和布局控件厮混在一起。如需要一个圆角边框就会使用Border套在一个布局面板外面。

WPF初学(一)——布局【良好界面的基础】的更多相关文章

  1. WPF中Grid布局

    WPF中Grid布局XMAl与后台更改,最普通的登录界面为例. <Grid Width="200" Height="100" > <!--定义 ...

  2. 3、WPF学习之-布局

    一.基础知识 1.所有WPF布局容器都派生自System.Windows.Controls.Panel抽象类的面板: 2.WPF种核心布局面板有StackPanel(栈面板).WrapPanel(环绕 ...

  3. dotnet 读 WPF 源代码笔记 布局时 Arrange 如何影响元素渲染坐标

    大家是否好奇,在 WPF 里面,对 UIElement 重写 OnRender 方法进行渲染的内容,是如何受到上层容器控件的布局而进行坐标偏移.如有两个放入到 StackPanel 的自定义 UIEl ...

  4. WPF如何实现类似iPhone界面切换的效果(转载)

    WPF如何实现类似iPhone界面切换的效果 (version .1) 转自:http://blog.csdn.net/fallincloud/article/details/6968764 在论坛上 ...

  5. WPF换肤之四:界面设计和代码设计分离

    原文:WPF换肤之四:界面设计和代码设计分离 说起WPF来,除了总所周知的图形处理核心的变化外,和Winform比起来,还有一个巨大的变革,那就是真正意义上做到了界面设计和代码设计的分离.这样可以让美 ...

  6. WPF下的视频录制界面设计

    原文:WPF下的视频录制界面设计 在去年12月份,我曾经写过三篇文章讨论C#下视频录制.播放界面的设计.这三篇文章是:利用C#画视频录制及播放的界面(一) 利用C#画视频录制及播放的界面(二)利用C# ...

  7. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  8. WPF中的布局控件(转)

    WPF中使用Panel进行页面布局,Panel是一个抽象类,它作为所有Panel面板控件的基类.Panel并不是继承自Control类,而是直接从FrameworkElement继承.看Panel的继 ...

  9. WPF编程学习——布局

    本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面设计中,合理的元素布局至关重要, ...

随机推荐

  1. html常用标签的使用方法

    1  html标题 <h1> to <h6> <!DOCTYPE html> <html lang="en"> <head&g ...

  2. Shell 脚本 ,, 根据进程号退出 从而关机

    #!/bin/bash fun(){ ps -ef | grep "$1" | awk '{print $2 $8}' > /usr/file while read line ...

  3. 【转载】通过JDBC对MySQL数据库的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  4. ios CoreData NSManagedObject 生命周期

    用同样的检索条件从context检索出的对象是一个????所以 在主页的3个brand没法释放,在仅仅处理brand的时候???? 和 多个 context无关 我重写了NSManagedObject ...

  5. 手动设置Windows7锁屏界面背景

    windows7系统安装之后锁屏.关机界面.开机欢迎界面都是系统默认的背景,其实这些背景就像桌面壁纸一样是可以更改的,如果没有修改过的话,按下面步骤就可以修改了. 首先选择一张喜欢的背景图片,分辨率不 ...

  6. ffmpeg-20160726-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  7. 【Python】range和xrange区别

    转自:http://www.cnblogs.com/zhangjing0502/archive/2012/05/16/2503880.html range    函数说明:range([start,] ...

  8. 一个简单的代码计算行数demo编写

    最近手头的项目基本上已经完结,历经了5个月的开发和迭代,各种的需求调整,想对自己的代码量进行一个客观的计算,于是抽了点时间写下了这个小demo,朋友们有需要的可以看看,很简单. 基本的思想就是:根目录 ...

  9. CityEngine基于规则贴图的实现技巧

    转自:http://blog.sina.com.cn/s/blog_841eeb5201010p3e.html CityEngine在贴图的实现过程有两种方式:第一种是通过i(geometryPath ...

  10. 立方体旋转 【web前端学习部落22群120342833】

    效果: HTML部分: <body class="body"> <div class="rect-wrap">   <!-- // ...