zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用BindingSource组件 将Windows Form控件绑定到通过调用XML Web服务获得的结果
    使用BindingSource组件将Windows Forms控件绑定到类型
    如何:用BindingSource将Windows Forms控件绑定到工厂对象
    如何:使用 Windows 窗体 BindingSource 组件对 ADO.NET 数据进行排序和筛选
    BindingSource
    DataSet
    C#里面如何判断一个Object是否是某种类型
    VS中提示:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
    TableAdapter、Dataset与BindingSource的关系
    BASE64和图片之间的互相转换
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/9023537.html
Copyright © 2011-2022 走看看