WPF窗体自适应分辨率
使用WPF创建一个窗体(Window)时,如果设置了固定的高度(Height)和宽度(Width),一旦用户的电脑分辨率过低,就会使得窗体及其中的内容无法完整地显示出来。要解决这个这个问题,有以下几个方法可供参考:
1、无论将窗体做成全屏的(WindowState="Maximized"),还是设置了固定的窗体大小,都可以利用DockPanel控件来进行布局。DockPanel控件有一个特殊的属性:LastChildFill="True",可以使该控件中的最后一个元素自动填充满剩下的位置。
如,某页面,最上方是一个下拉框,最下方是一个按钮,中间是一个列表。可以按如下写法进行布局:
<DockPanel LastChildFill="True">
<ComboBox Height = "20" DockPanel.Dock="Top"/>
<Button Height = "20" DockPanel.Dock="Bottom"/>
<ListView DockPanel.Dock="Top">......</ListView>
</DockPanel>
这样即使列表控件ListView看上去是放在DockPanel的最后的位置,但其实是填充在了下拉框ComboBox和按钮Button之间的位置。由于下拉框和按钮都指定了具体的高度,因此该页面中间的大片空白就被ListView全部填满,不需要为ListView指定一个具体的高度或宽度。
无论分辨率如何变化,只要窗体是能够完整显示出来的,窗体中的元素都能够正常显示。
2、如果窗体不是全屏的,设置了具体的高度或宽度,在有些分辨率下连窗体都无法显示完全,那么上述方法也无法解决问题。只能使用ViewBox控件,该控件可拉伸和缩放单个子元素以填满可用空间。
一个 Viewbox 只能具有一个Child,需要将ViewBox作为窗体中的最外层元素,将所有控件都包括在其中,如:
<Window>
<View>
<DockPanel>
......
</DockPanel>
</View>
<Window>
再将所有控件放到DockPanel中进行布局。经过ViewBox处理过的窗体,在分辨率不足以显示原定大小的情况下,会根据分辨率将窗体、窗体中的所有控件,包括字体大小,都按比例自动进行缩放。
http://www.cnblogs.com/xuxiaona/archive/2013/03/28/2987193.html
WPF窗体自适应分辨率的更多相关文章
- WinForm窗体自适应分辨率
我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可.因 ...
- Delphi:窗体自适应屏幕分辨率的改进
在窗体依据屏幕分辨率自适应调整尺度方面,昨天的工作可以说是一个突破点.昨天的工作找到了长期以来我的原有方案的问题所在,这是非常关键的.但是昨天晚上的解决方案并不完美,今天的这个才是比较完美的解决版. ...
- WPF之路四:窗体自适应
下面我来举个例子说明如何用Grid或DockPanel来实现自适应窗体. 让我们新建一个WPF工程,完成后我们打开对应的XAML文件,可以看到VS已经自动添加了<Grid></Gri ...
- WPFの获取屏幕分辨率并自适应
double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度 double y = SystemParameters.WorkArea.Height; ...
- delphi 窗体自适应屏幕分辨率
delphi 窗体自适应屏幕分辨率 这是个困惑我很长时间的问题,到今天终于得到解决了. 话说Delphi有个很强的窗体设计器,这一点让VC粉丝垂涎三尺而不可得.但是,Delphi里设计的窗体并没有自动 ...
- Windows 窗体的自适应分辨率、分屏显示、开机自启动
前言 这里所说的针对Winform.WPF 都适用.开机自启动对于控制台的也可以. 还是从项目实践中得来的,在这里记录下来. 对于自适应.分屏显示,在以前感觉应该比较高大上的问题,会比较难.在经过这次 ...
- WPF 获取屏幕分辨率(获取最大宽高)等
double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度 double y = SystemParameters.WorkArea.Height; ...
- Delphi 实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题
给你一段代码,网上转的:unit uMyClassHelpers;//实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题.// 陈小斌,2012年3月5日 interface Uses ...
- Winform WPF 窗体显示位置
WinForm 窗体显示位置 窗体显示的位置首先由窗体的StartPosition决定,FormStartPosition这个枚举值由如下几种情况 // 摘要: // 窗体的位置由 System.Wi ...
随机推荐
- 使用globalData函数设置全局变量
在app.js中设置需要的全局变量的参数,比如公司名称等 //app.js App({ globalData: { title: 'tomatocc' } }) 然后就可以在某个页面的js文件中(比如 ...
- bcb中TParamter传NULL值
if (status_Desc.IsEmpty()) Queue_Status->Value = Null(); else Queue_Status->Value = status_Des ...
- 《你说对就队》第七次作业:团队项目设计完善&编码
<你说对就队>第七次作业:团队项目设计完善&编码 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> ...
- destoon7.0后台栏目分类一键获取所有栏目拼音目录
近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...
- 做vue项目时,收集的一些有意思的功能
1. element-ui dialog组件添加可拖拽位置 可拖拽宽高 https://segmentfault.com/a/1190000012940145
- c++的动态绑定和静态绑定及多态的实现原理(摘)
C++多态的实现原理 为了支持c++的多态性,才用了动态绑定和静态绑定.理解它们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误. 需要理解四个名词:对象的静态类型:对象在声明时采用的类型. ...
- CloudCompare 的简单的使用说明
来自:https://blog.csdn.net/datase/article/details/79797795 File open:打开 save:保存 Global Shift settings: ...
- if语句:求x的绝对值
#include<stdio.h>void main(){ int x,y; scanf("%d", &x); printf("x=%d\n" ...
- P4357 [CQOI2016]K远点对
题意:给定平面中的 \(n\) 个点,求第 \(K\) 远的点对之间的距离,\(n\leq 1e5,K\leq min(100,\frac{n\times (n-1)}{2})\) 题解:kd-tre ...
- java.util.Properties 读取配置文件中的参数
用法 getProperty方法的返回值是String类型. java.util.Properties 读取配置文件中的参数 //读取配置文件 FileInputStream inStream = n ...