想在Win上自己写点小工具用,GUI自然是免不了的,于是决定学一学WPF,直接拖控件是很方便啊。控件拖出来以后发现运行时改变窗口大小控件不会重绘,搜索了一下发现了解决办法:使用Viewbox控件。

  Viewbox控件的功能是"Defines a content decorator that can stretch and scale a single child to fill the available space",即Viewbox只能有一个子元素,并且会拉伸/缩放这个子元素使其填满可用的空间。通常可将需要变动大小的控件放在一个Canvas或Grid或其他类型的控件中,再将这个控件放入Viewbox内,例如:

 <Viewbox>
<Grid>
<DatePicker x:Name="DateSelector" HorizontalAlignment="Stretch" Margin="10,10,165,222" VerticalAlignment="Stretch"/>
<TextBox x:Name="Content" HorizontalAlignment="Stretch" Margin="10,43" TextWrapping="Wrap" Text="input" VerticalAlignment="Stretch"/>
<Button x:Name="Add" Content="Add" HorizontalAlignment="Stretch" Margin="197,228,10,10" VerticalAlignment="Stretch" Width="" Click="Add_Click"/>
</Grid>
7 </Viewbox>

Viewbox中的子控件需要将HorizontalAligment和VerticalAlignment属性(如果不在Canvas中)设为Stretch,这两个属性分别表示子控件在父控件中组合时的水平和竖直对齐特征。Canvas基于绝对定位布局,所以该属性没有作用。

  Viewbox可更改Stretch属性选择子元素如何放入Viewbox的可用空间,Stretch的枚举如下:

    Fill:调整内容的大小以填充目标尺寸,不保留纵横比;

    None:内容保持其原始大小;

    Uniform:在保留内容原有纵横比的同时调整内容的大小,以适合目标尺寸。Viewbox中的Stretch属性值默认为Uniform;

    UniformToFill:在保留内容原有纵横比的同时调整内容的大小,以填充目标尺寸。 如果目标矩形的纵横比不同于源矩形的纵横比,则对源内容进行剪裁以适合目标尺寸; 

[初学WPF]控件大小自适应的更多相关文章

  1. wpf 控件大小随窗体大小改变而改变

    WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了ViewBox的显示机制是, ...

  2. WPF控件界面自适应

    之前就听说WPF流式布局,顺滑的很.但由于专业只学习了winform,工作对界面的要求并不高一直没去玩它.目前公司一些软件都是WPF布局,加上工作内容涉及Socket通讯较多,决定用WPF做一个通讯小 ...

  3. winform 控件大小随着窗体自适应

    3个方法: #region 控件缩放变量        double formWidth;//窗体原始宽度        double formHeight;//窗体原始高度        doubl ...

  4. 浅尝辄止——使用ActiveX装载WPF控件

    1 引言 使用VC编写的容器类编辑器,很多都可以挂接ActiveX控件,因为基于COM的ActiveX控件不仅封装性不错,还可以显示一些不错的界面图元. 但是随着技术不断的进步,已被抛弃的Active ...

  5. WPF控件模板

    引言:在进行WPF项目开发过程中,由于项目的需要,经常要对某个控件进行特殊的设定,其中就牵涉到模板的相关方面的内容.本文也是在自己进行项目开发过程中遇到控件模板设定时集中搜集资料后整理出来的,以供在以 ...

  6. 在WinForm应用程序中嵌入WPF控件

    我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类.而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是为了 ...

  7. 使用触发器定义 WPF 控件的行为

    Expression Studio 4.0   其他版本 Expression Studio 3.0 Expression Studio 2.0   此主题尚未评级 - 评价此主题   在应用程序的生 ...

  8. WPF 控件库——仿制Windows10的进度条

    WPF 控件库系列博文地址: WPF 控件库——仿制Chrome的ColorPicker WPF 控件库——仿制Windows10的进度条 WPF 控件库——轮播控件 WPF 控件库——带有惯性的Sc ...

  9. WPF 控件库——可拖动选项卡的TabControl

    WPF 控件库系列博文地址: WPF 控件库——仿制Chrome的ColorPicker WPF 控件库——仿制Windows10的进度条 WPF 控件库——轮播控件 WPF 控件库——带有惯性的Sc ...

随机推荐

  1. Linux laravel安装

    第一步:安装php套件 目前为止laravel是5.1版本,需要对php有要求,要php5.59以上 The Laravel framework has a few system requiremen ...

  2. Android倒计时案例展示

    1. Handler 与Message方法实现倒计时功能 关于Handler与Message消息机制的原理可查看:Android--Handler使用应运及消息机制处理原理分析 这个设计思路也是最经常 ...

  3. 9款HTML5实现的超酷特效

    之前我们推荐了8款HTML5实现的特效和应用,今天我们带来的这9款热门的HTML5特效同样会带给你全新的视角和体验. HTML5是HTML的升级版,HTML5有两大特点:首先,强化了 Web 网页的表 ...

  4. 苹果开发——Xcode证书生成、设置及应用

    原地址:http://zengwu3915.blog.163.com/blog/static/2783489720137483422530/ 开发环境: Mac OS lion 10.8.2.Xcod ...

  5. 递归方式 DOM 解析(parse) XML

    friends.xml <span style="font-size:16px;"><?xml version="1.0" encoding= ...

  6. C# Dictionary通过value获取对应的key值[转发]

    1:最直白的循环遍历方法,可以分为遍历key--value键值对以及所有的key两种表现形式 2:用Linq的方式去查询(当然了这里要添加对应的命名空间 using System.Linq) 如下为一 ...

  7. WPF显示经常使用的几个显示文字控件TextBox, TextBlock, Lable

    TextBox, TextBlock. Lable 当中TextBox 和Lable均继承了Control类 能够对其进行模板编辑. 而TextBlock没有继承Control所以不能对其进行模板编辑 ...

  8. 微信公众平台自定义菜单及高级接口PHP SDK(转)

    本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法. 作者 方倍工作室 修正记录: 2014.05.03 v1.0 方倍工作室 http://www.cnblogs.com/txw ...

  9. IntelliJ IDEA导航特性Top20

    在前面的文章里,我介绍了IntelliJ IDEA(以下称IntelliJ)中与代码补全及重构相关的特性.今天我将介绍另外一个利器——IntelliJ的导航(Navigation),只要运用得当,它将 ...

  10. Windows7清除图标缓存

    以下是批处理文件代码: rem 关闭Windows外壳程序explorer taskkill /f /im explorer.exe rem 清理系统图标缓存数据库 attrib -h -s -r & ...