窗口自适应就是说,当主窗口缩放的时候,内部的控件位置自动的调整,而不是隐藏掉。这主要依赖于Grid布局。

1.比如这个groupbox 本身是在一个Grid的Row中的。缩放之后,左边的button不见了。

开始:

缩放之后:

   <GroupBox Name="EmailGroupBox" Grid.Row="1" Grid.Column="0" Header="电子邮件" Margin="0,10,10,10" >
<StackPanel Name="Panel" Orientation="Horizontal">
<Grid Name="MinGrid" Width="{Binding ElementName=Panel, Path=ActualWidth}">
<Grid.RowDefinitions>
<RowDefinition MinHeight="20" Height="Auto"></RowDefinition>
<RowDefinition MinHeight="1" Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="60" Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*" MinWidth="100"></ColumnDefinition>
<ColumnDefinition MinWidth="70" Width="Auto" ></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" >邮件地址:</Label>
<TextBox TabIndex="1" Grid.Row="0" Grid.Column="1" MinWidth="100" Text="{Binding ServerEmailAddress, UpdateSourceTrigger=LostFocus}" HorizontalAlignment="Stretch" VerticalContentAlignment= "Center"></TextBox>
<Button Grid.Row="0" TabIndex="2" Grid.Column="2" HorizontalAlignment="Stretch" Margin="5 0 5 0" Click="EmailConfigButton_Click">设置</Button>
</Grid> </StackPanel>
</GroupBox>

拿掉 StackPanel就可以缩放(本身也是多余的代码)。最小宽高都可以省略。因为这里的最小宽度无法阻挡主窗口的缩放,最小宽高直接放到子控件上面就行,不必放在Row或col上面。 2个row也是多余 修改之后:

   <GroupBox Name="EmailGroupBox" Grid.Row="1" Grid.Column="0" Header="电子邮件" Margin="0,10,10,10" >
<Grid Name="MinGrid" Width="{Binding ElementName=Panel, Path=ActualWidth}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" >邮件地址:</Label>
<TextBox TabIndex="1" Grid.Row="0" Grid.Column="1" MinWidth="100" Text="{Binding ServerEmailAddress, UpdateSourceTrigger=LostFocus}" HorizontalAlignment="Stretch" VerticalContentAlignment="Center"></TextBox>
<Button Grid.Row="0" TabIndex="2" Grid.Column="2" HorizontalAlignment="Stretch" Margin="5 0 5 0" Click="EmailConfigButton_Click">设置</Button>
</Grid>
</GroupBox>

但也不是说StackPanel 就不能缩放。下面的StackPanel是有缩放的效果的。

 <StackPanel Margin="5" Orientation="Horizontal" Grid.Row="3">
<Button TabIndex="4" HorizontalAlignment="Left" Click="AddCustomer" Width="62" Height="28" >新建</Button>
<Button HorizontalAlignment="Left" TabIndex="5" Click="DeleteCustomer" Width="62" Margin="20,0,0,0" Height="28" VerticalAlignment="Bottom" >删除</Button>
</StackPanel>

和groupbox组合的时候要注意。

WPF 窗口自适应的更多相关文章

  1. 使用MVVM DataTriggers在WPF XAML视图之间切换/Window窗口自适应内容大小并居中

    原文 使用MVVM DataTriggers在WPF XAML视图之间切换 相关文章: http://www.technical-recipes.com/2016/switching-between- ...

  2. [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu)

    原文 [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu) [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu) 周银辉 点击窗口左上角图标时弹出来的菜单也就是这里所说的系 ...

  3. Wpf窗口中打开WinForm窗口

    获取wpf窗口对应的句柄窗口 using System; using System.Windows; using System.Windows.Interop; using IWin32Window ...

  4. C# 窗口自适应窗口宽度和高度

    其实winform并不适合做自适应这玩意的,虽然,能做是能做, 就像菜刀一样能切水果,但是,不是那么合适,毕竟有水果刀 wpf做自适应拉伸窗体,会更好一些. 代码: #region 自适应 priva ...

  5. 自定义WPF 窗口样式

    原文:自定义WPF 窗口样式 Normal 0 false 7.8 pt 0 2 false false false EN-US ZH-CN X-NONE 自定义 Window 在客户端程序中,经常需 ...

  6. 设置WPF窗口相对于非WPF窗口的位置

    原文:设置WPF窗口相对于非WPF窗口的位置 在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不 ...

  7. [WPF]建立自适应窗口大小布局的WinForm窗口

    编写WinForm程序时,都会碰到一个问题.就是WinForm窗口在不同分辨率下的大小问题.举例说明,你编写的WinForm窗口在1024×768下是合适.匀称的.不过,如果用户的计算机的分辨率为14 ...

  8. WPF 窗口大小自适应

    在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题. 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 界面设 ...

  9. VMVare的窗口自适应

    啊!好久没来博客园了.原因很简单,我把密码丢了. 最近才从系统申请重置了密码,这不,又能登录了.你可能好奇,是的,我也在疑惑:我是不是搞IT的啊?因为只要密码丢失,我就认为世界完蛋了,我完蛋了:) 这 ...

随机推荐

  1. SQL Server已提交读快照隔离级别的设置

    如果要把SQL Server数据库事务隔离级别设置为已提交读快照隔离 如果直接运行下面的语句: ALTER Database [mydbname] SET READ_COMMITTED_SNAPSHO ...

  2. .net多线程

    线程 线程池 异步 异步更新winform界面 线程同步

  3. 插入排序 - C语言

    插入排序的思想: 以现有的已排序元素为基础,下一个元素添加到正确的位置,则最终会完成排序. 第一个元素本身是已经排序好的.从第二个开始排. void insertSort(int arr[], int ...

  4. Futoshiki求解

    Futoshiki求解 Futoshiki是对于一个n的方阵,需要满足如下条件: ·每一行和每一列的元素都不能重复,即每一行和每一列1到n,n个数字都出现,且只出现一次. ·同一行或同一列中相邻两个元 ...

  5. ocfs2: 搭建环境

    OCFS2是基于共享磁盘的集群文件系统,它在一块共享磁盘上创建OCFS2文件系统,让集群中的其它节点可以对磁盘进行读写操作.OCFS2由两部分内容构成,一部分实现文件系统功能,位于VFS之下和Ext4 ...

  6. adv联系题

    http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html(新)

  7. div+css实例教程

    DIV+CSS是WEB设计标准,它是一种网页的布局方法.与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离. 对于初学者来说,可能比较模糊不熟悉.毕竟,样式布局需要通 ...

  8. c# 筛选进程命令行,得其ProcessId(唯一标示符,简称pid),再通过pid结束进程

    不说别的,上代码 部分using: using System.Diagnostics; using System.Management; 其中要引用System.Management 1.通过筛选Co ...

  9. CSS有三种基本的定位机制

    CSS有三种基本的定位机制:普通流,浮动和绝对定位. 普通流:在普通流中元素框的位置由元素在html中的位置决定, 1.元素position属性为static或继承来的static时就会按照普通流定位 ...

  10. JSON与JAVA数据的转换

      1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "sec ...