由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. git分支的合并

    原文: http://gitbook.liuhui998.com/3_3.html http://gitbook.liuhui998.com/5_3.html 一.如何分支的合并 在git中,可以使用 ...

  2. ASP.NET MVC Dropdownlist

    本文介绍如何在网页里显示DropDownList. Step 1: 在Control里面添加方法 public ActionResult ShowDropDownList() { return Vie ...

  3. CRC在线计算器

    On-line CRC calculation and free library   https://www.lammertbies.nl/comm/info/crc-calculation.html

  4. IPC---共享内存

    共享内存就是允许两个或多个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据时,不需要在客户进程和服务器进程之间幅值,因此是最快的一种IPC.不同进程之间共享的内存通常安 ...

  5. repeater 相关问题

    1.如果添加控件会显示代码有问题,把双引号(“)改为单引号(‘)就可以了

  6. codeforces 558B. Amr and The Large Array 解题报告

    题目链接:http://codeforces.com/problemset/problem/558/B 题目意思:给出一个序列,然后找出出现次数最多,但区间占用长度最短的区间左右值. 由于是边读入边比 ...

  7. mysql格式化整数类型时间生成年月日时分秒格式(long或string接收)

    数据库格式: 数据库mysql语句: FROM_UNIXTIME( s.timemodified, '%Y-%m-%d %h:%i:%s' ) 生成结果: 测试sql为: SELECT *, FROM ...

  8. iOS 系统消息

    转载自:http://momirror.blog.163.com/blog/static/48418184201361541235481/ 一.键盘 1.UIKeyboardWillShowNotif ...

  9. Get与Post数据长度的限制

    这个问题在我的开发中也遇到,所以在此贴出来(也是在网上搜出来的,呵呵)这是原贴地址http://blog.csdn.net/somat/archive/2004/10/29/158707.aspx两个 ...

  10. Java常用工具类题库

    一.    填空题 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中包装类Integer是___Number__的直接子类. 包装类Inte ...