由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. ganglia及ganglia-api相关介绍

    1, ganglia的安装: http://blog.topspeedsnail.com/archives/3049 2, ganglia-api项目地址 https://github.com/gua ...

  2. neutron用linux_bridge部署provider网络

    网卡配置: # The loopback network interface auto lo iface lo inet loopback # The primary network interfac ...

  3. Excel导出的几种方式

    1.html 前台html与js代码(文件:ExportExcelByHtml.aspx): <html xmlns="http://www.w3.org/1999/xhtml&quo ...

  4. Java Statement和PreparedStatement性能测试(转)

    本文转载自http://blog.csdn.net/liubo5005/article/details/7239935 先上代码: import java.sql.Connection; import ...

  5. linux skill

    linux console终端乱码解决 1.console终端乱码 在/etc/profile文件的最后一行添加如下内容: export LC_ALL="zh_CN.GB18030" ...

  6. tomcat有哪些性能调优方法

    前几天看见一篇介绍性能调优文章,觉得不错.特此收藏(http://blog.csdn.net/lifetragedy/article/details/7708724)

  7. CentOS更新yum源

    CentOS更新yum源 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载 ...

  8. selenium 配合sikuli script操作高德地图

    会不会使用工具,是一般QA和高级QA的区别 ---To be crazy Java就是好,开源框架遍地都是,各种niubility的jar包,各种神器,真是不亦乐乎. 今天研究一下基于图片识别作为对象 ...

  9. 留只脚印(DP)

    题目链接:http://codeforces.com/problemset/problem/698/A 很久很久没做咯~~~~ dp 是个很神奇的东西.... #include <iostrea ...

  10. codeforces 490B.Queue 解题报告

    题目链接:http://codeforces.com/problemset/problem/490/B 题目意思:给出每个人 i 站在他前面的人的编号 ai 和后面的人的编号 bi.注意,排在第一个位 ...