[初学WPF]控件大小自适应

  想在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内,例如:

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

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

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

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

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

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

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

时间: 2024-10-09 07:37:51

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

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

WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了ViewBox的显示机制是,先在内存中把按照逻辑大小把子控件显示出来,然后等比例的缩放显示到ViewBox的客户区 例: Button btn = new Button(); btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; btn.Ve

Qt 图片随控件大小适应

一开始总是找不到 用什么方法可以让 图片随着控件大小自适应, 所以不同尺寸的控件使用不同的图片,很麻烦,搜索了一些资料,加上网友的指导, 原来是设置 border-image  而不是  image或者 background-image 比如下面这一段代码是我设置 QSpinBox的qss脚本: 1 QSpinBox::up-button { 2 subcontrol-origin: margin; 3 subcontrol-position: top right; 4 border-image

WPF随笔之 控件根据设定的显示行数列数填充控件并自适应窗体大小(多绑定MVVM方式实现)

(效果图,如见最下面) 需求:根据设置的行数列数,控制展示控件个数,并且填充的控件们大小刚刚好自适应填充满固定的区域,并且调整窗体大小的时候控件动态自适应窗体大小,即自适应大小并不显示滚动条(比如,设置了1行1列,则第一页显示一个控件,如设置了2行2列,则第一页显示第一行2个控件,第二行2个控件). 解决方案,我总结有3 1.在cs代码里面动态生成Grid控件,根据设定的行列动态生成行列,将控件自适应宽高填充进去 2.固定Grid.使用WrapPanel排序,当Grid实际宽高发生改变时,动态计

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

3个方法: #region 改变控件大小 //获取控件原始信息 protected void GetAllInitInfo(Control ctrlContainer) { //int tempWidth = Screen.PrimaryScreen.Bounds.Width / 5 * 4; //int tempHeight = Screen.PrimaryScreen.Bounds.Height / 5 * 4; if (ctrlContainer.Parent == this)//获取窗体

【ANDROID 初学】控件--IMAGEVIEW的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

WPF控件自绘——基础,Control类的定义

用于记录自己的学习WPF控件,大神请飘过... [WPF控件类继承关系图] 所有可以自定义模版的控件都是从Control继承,所以我们来看看Contorl类里面到底有些什么.为以后的控件自定义模版做好准备.废话少说先来看看WPF中Control类的定义 1 namespace System.Windows.Controls 2 { 3 public class Control : FrameworkElement 4 { 5 public static readonly DependencyPr

DevExpress v15.1:WPF控件升级(四)

<下载最新版DevExpress WPF Controls v15.1.5> WPF编辑器 在Token编辑器中的Per-Pixel滚动 水平和垂直的per-pixel滚动 渐进式搜索 查找和组合框编辑器:在只读模式中渐进式搜索. WPF Tab Control Web浏览器的分页用户界面 在新的版本中,我们的WPF Tab控件可用于创建具有分页用户界面的应用程序--如同那些在当代Web浏览器中的应用程序一样.新功能包含了一个新的DXTabbedWindow组件,支持最终用户拖拽.自定义用户界

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

原文:WPF 控件库--可拖动选项卡的TabControl 一.先看看效果 二.原理 1.选项卡大小和位置 这次给大家介绍的控件是比较常用的TabControl,网上常见的TabControl样式有很多,其中一部分也支持拖动选项卡,但是带动画效果的很少见.这也是有原因的,因为想要做一个不失原有功能,还需要添加动画效果的控件可不是一行代码的事.要做成上图中的效果,我们不能一蹴而就,最忌讳的是一上来就想实现所有效果. 一开始,我们最好先用Blend看看原生的TabControl样式模板部分是如何实现

wpf控件设计时支持(3)

原文:wpf控件设计时支持(3) wpf设计时调试 编辑模型 装饰器 1.wpf设计时调试 为了更好的了解wpf设计时框架,那么调试则非常重要,通过以下配置可以调试控件的设计时代码 (1)将启动项目配置成外部的visual studio ide启动程序devenv.exe (2)F5启动调试然后会打开一个新的visual studio ide,这个时候要记得重新打开你要调试的那个项目. 以上两个步骤就可以实现设计时调试了 2.编辑模型体系 当选中某些控件出现的设计时,这个选中的控件便成了可编辑的