WPF Bug清单之(8)——RowDefinition中MaxHeight在一定条件下失效

再下一城。

BUG描述:当RowDefinition的Height属性被设置为Auto时,MaxHeight将不会对这个Row的Height起到限制作用。

Bug发现过程:想做一个像Visual Studio 2008里Error List一样的东西。平时自动占用最小的空间,可以在适当的时候自己弹出来,但是又不要弹得过高。

示例窗口代码如下:

Demo Window

<Window x:Class="InvaliMaxHeight.DemoWindow"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    Title="MaxHeight of RowDefinition NOT Effct"    WindowStartupLocation="CenterScreen"    Height="240" Width="300"    ResizeMode="NoResize">    <Grid>        <Grid.RowDefinitions>            <RowDefinition/>            <RowDefinition Height="5"/>            <RowDefinition Height="Auto" MaxHeight="50"/>        </Grid.RowDefinitions>        <DockPanel Margin="12">            <TextBlock DockPanel.Dock="Top" TextWrapping="Wrap"                       Text="XXX"/>            <Button Content="Show Large Tab"                Click="OnShowLargeTabClick"                HorizontalAlignment="Center"                VerticalAlignment="Center" Width="125"/>        </DockPanel>        <GridSplitter Grid.Row="1" HorizontalAlignment="Stretch"/>        <TabControl Grid.Row="2" Margin="12">            <TabItem Header="Empty Tab"/>            <TabItem Header="Large Tab" Name="largeTab">                <ListBox Name="listBox"/>            </TabItem>        </TabControl>    </Grid></Window>

注:RowDefinition的Height的默认值为*。

为了避免多余代码产生不必要的误会,上面的代码中尽量减少了大小的设置。设置的Margin是为了美观。运行效果如下图。

图1. Startup

可能大家不知道50px有多大,大概就是现在灰线下的部分的高度。就是说点击Button之后,高度不应该有太大的变化。可是结果却是这样。

图2. Clicked

这时,如果拖一下上面的GridSplitter,那么Large Tab那个部分又会突然变小。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索代码
, 高度
, GridSplitter
, 部分
height
rowdefinition height、wpf rowdefinition、rowdefinition、rowheight、wpf height auto,以便于您获取更多的相关知识。

时间: 2024-10-12 07:35:51

WPF Bug清单之(8)——RowDefinition中MaxHeight在一定条件下失效的相关文章

WPF Bug清单之(10)——CheckBox在不同主题下具有不同的行为

我们都知道Window有多种主题(Theme).一般情况下,显然我们会希望不同 主题下,我们的应用程序的行为不会有变化.或者说,我们不希望为了特定的主 题,为控件写特定的逻辑.然而不幸的是,.NET Framework里一些控件自带的主 题就存在问题,使得我们不得不在使用时,为这个控件在特定的主题下特殊处理 . 下面举一个例子.在 ListBox里放CheckBox,组成一个CheckBoxList应该是 一个比较常见的应用.从理论上来说,在WPF里最简单的方式就是在 ListBox的 Item

WPF Bug清单(序)与之(1)——可以多选的单选ListBox

从.NET 3.0发布至今,.NET Framework相继发布了.NET 3.5和.NET3.5 SP1.其间做了两个基于WPF的项目.发现现在的WPF的BUG真的是不算少.给程序的开发带来了不少的困扰--为了避开BUG,而不得不多写很多代码. 这个"WPF BUG清单"系列,将列出笔者在项目中遇到过的WPF的各种问题,也许不一定是BUG,但是会造成开发上的不便.更感觉WPF的第一次发布实在有赶鸭子上架的嫌疑.很多东西都还没有做就发布了.(跟Silverlight 1.0一样) 先举

WPF Bug清单之(12)

WPF Bug清单之(12)--与自定义Attached Property相关的Binding Path运行时错误 我们都知道DataBinding的格式是这样的: {Binding Path=PropertyName} 其中的Path=这几个字是可以省略的.从而简写成: {Binding PropertyName} 这个行为也在MSDN上面特别介绍过. 本文所指"解析错误"是指:当Property是自定义的AttachedProperty时, 第二种写法会产生运行时错误.如下代码所示

WPF Bug清单之(4)——点击RadioButton的空白没有反应

在WPF BUG清单之二,介绍过RadioButton在绑定上的一个Bug.现在再来介绍它的另一个造成RadioButton的点击事件处理不正确的BUG.现象是:点在RadioButton的范围内,可这个RadioButton就是选不中. 先来看一个例子.Windows里一个常见的对话框,用了多个RadioButton.如下图所示. 图1.RadioButton使用范例 把RadioButton放在GroupBox的Header上,是很常见的一个用例,而且被微软的UX Guide所认可. 大家可

WPF Bug清单之(7)——顽固的Error Template

关于WPF数据绑定是什么,请参考Data Binding Overview:http://msdn.microsoft.com/en-us/library/ms752347.aspx 关于WPF数据绑定的Validation更多细节,请参考Data Validation in 3.5:http://blogs.msdn.com/wpfsdk/archive/2007/10/02/data-validation-in-3-5.aspx 关于WPF数据绑定的Validation中的ErrorTemp

WPF Bug清单之(6)——Button的IsCancel属性失效

在上一篇中,描述了模态对话框隐藏之后变成了非模态的Bug,很多人回复表示这不算是一个Bug,我也表示理解.Bug只有在需求之下才有意义,不同的需求,对Bug的界定也不一样.作为一个Framework,.NET只能做到在多数时候是符合最广泛群体的需求的,就可以说它合格.但是对于前一篇描述的问题,想补充一下自己的考虑. Window的Show和ShowDialog,用于将窗体展现(我没有用显示)出来,而Close用于关闭.Close之后就不能再用Show或是ShowDialog再次将窗体展现出来,否

WPF Bug清单之(2)——RadioButton的IsChecked绑定失效

.NET Framework已经算是一个很易用的库了.可以自动地为我们做很多事情,而且大都做得还不错.但是自动完成的事情很可能会有隐患,因为Framework本身是并不了解业务逻辑的.它自动完成的事情,可能会给我们帮倒忙. RadioButton就是其中一个. 先来从设置值的角度介绍一下WPF里的Dependency Property(以下简称DP).在WPF里控制一个控件的DP,有太多的方式.可以用Style,可以用Animation,可以用Data Binding,可以用Trigger,还有

WPF Bug清单之(13)——应该出现却没有出现的ListView水平滚动条

我们知道ListView在内容超出控件本身范围时,默认会把滚动条显示出来. 这个内容,显然应该包括Head和Items两个部分.无论哪个部分超出了,都应该 把水平滚动条显示出来. ListView的Bug就在于,当ListView中没有Item,且Headr的总长超过 ListView本身时,水平滚动条没有出现. 这个Bug很好重现.代码如下: <Grid x:Name="LayoutRoot"> <ListView Width="100">

WPF Bug清单之(11)——错位的RenderTransform动画

在WPF中制作位移类动画大致有3种方式,Margin.RenderTransform和 LayoutTransform.虽然3者的效果略有不同,但是不少情况下3种方式可以通用 .但是当你了解到RenderTransform所存在的Bug时,可能就需要考虑一番了. 我们都知道很多控件都有FocusVisualStyle,一般就是一个虚线框. RenderTransform的问题就在于, 控件的FocusVisualStyle中的元素,不会随着 控件本身一起被Transform. Bug的重现过程如