wpf - WPF 如何解决循环相关的大小调整问题?

标签 wpf resize

我试图弄清楚为什么当我设置一个窗口来调整其内容大小,然后设置其内容以占用所有可用空间时,WPF 不会变得疯狂......有什么想法吗?

最佳答案

布局系统中有两个过程 - 测量和排列。

首先,在测量过程中,每个子级都会被赋予一个建议的可用大小,并且这会沿着树向下传播。这会设置每个子项的 DesiredSize 属性。

在接下来的排列过程中,将考虑 DesiredSize,但父级对将给子级提供多少实际可用大小有最终决定权,并且父级放置每个子级相应地,通知它它获得的实际大小,依此类推。

此外,考虑几种可以想象的极端情况:

  • 子项要求 double.Infinity 所需大小:明确不允许,引发异常
  • 子级将其 Horizo​​ntalAlignment 设置为“拉伸(stretch)”:父级不提供无限的实际尺寸
  • 窗口设置为 SizeToConent,子窗口设置为“Stretch”,未设置其他约束:
    1. 窗口首先提供无限的度量大小
      • 子级要求其子级测量的大小(文本宽度、边距等) - 不是无限大小
      • 排列:窗口将其大小设置为系统定义的最小值或子级所需的大小,以较大者为准(不能是无限的)
      • child 会拉伸(stretch)以适应上一步中确定的尺寸

关于wpf - WPF 如何解决循环相关的大小调整问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226123/

相关文章:

c# - Xaml WPF MVVM 命名空间和新项目文件夹,InitializeComponent(); StartupUri=

c# - 可调整大小的网格列

java - setPreferredSize() 在我的 JButton 中不起作用

jquery - 如何在可调整大小的 div 中适应文本及其适当的大小..?

wpf - WPF 中的架构命名空间和程序集引用之间有什么区别?

标签内容上的 WPF StringFormat

c# - 通用 View 模型编辑支持

c# - 滚动条样式

.net - wpf 调整大小完成

javascript - 调整文本大小时如何确保元素保持相同的高度?