大佬教程收集整理的这篇文章主要介绍了WPF:使子元素’MinWidth/MinHeight约束Window,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我正在研究的Window的简化版本.我的真实应用程序的UserControl在这里被边框替换:
<Window xmlns="http://scheR_567_11845@as.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://scheR_567_11845@as.microsoft.com/winfx/2006/xaml"> <DockPanel> <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal"> <Button Content="OK"/> <Button Content="Cancel"/> </StackPanel> <Border BorderBrush="Green" BorderThickness="10" MinWidth="200" MinHeight="150"/> </DockPanel> </Window>
如果我将窗口缩小到足够小,则边框的右边和底边被切掉.我想防止窗口变得那么小 – 我希望窗口的最小尺寸恰好是边框最小尺寸的点.一些框架(如Delphi VCL)自动将子控件的最小大小聚合到窗口;我希望WPF也这样做,但很明显它没有.
我总是可以显式设置Window的MinWidth和MinHeight,但为了正确计算它们,我必须考虑按钮的ActualHeight,这意味着等待至少一个布局传递(或手动@L_388_8@measurE).乱.
<Window ... SizeToContent="WidthAndHeight" ...>
然后,一旦完成大小调整(将子元素的MinWidth和MinHeight考虑在内),运行一些将MinWidth和MinHeight设置为窗口的ActualWidth和ActualHeight的代码.此时关闭SizeToContent也是个好主意,以免窗口内容发生变化时调整窗口大小.
接下来的问题是,在哪里放这个代码?我终于确定了OnsourceInitialized:
protected override void OnsourceInitialized(EventArgs E) { base.onsourceInitialized(E); MinWidth = ActualWidth; MinHeight = ActualHeight; ClearValue(SizeToContentProperty); }
我也尝试了Loaded事件,但在我的情况下,那太早了 – 在数据绑定被评估之前发生了加载,并且我的数据绑定影响了我的布局(一个带有内容绑定的Label – 它的大小在绑定生效).将代码移动到OnsourceInitialized,在数据绑定后触发,纠正了问题.
(还有其他事件在绑定后触发,但在显示窗口之前 – SizeChanged和Layoutupdated – 但它们都会在显示窗口时多次触发,如果用户调整窗口大小,则会再次触发; OnsourceInitialized仅触发一次,我认为理想.)
以上是大佬教程为你收集整理的WPF:使子元素’MinWidth/MinHeight约束Window全部内容,希望文章能够帮你解决WPF:使子元素’MinWidth/MinHeight约束Window所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。