【发布时间】:2018-03-30 22:24:32
【问题描述】:
UWP 存在设计问题: 存储布局操作结果的ActualHeight/ActualWidth始终为实数。但是,由于它们更新如此频繁,UWP 不会在它们发生更改时通知。
高度/宽度确实提供更改通知,但通常可能是 NaN,例如当对象设置为拉伸以填充父对象时。
答案似乎是:不要。订阅 SizeChanged 并使用 ActualHeight 和 ActualWidth 直接调整依赖于大小的属性。
但是,我遇到了后者的另一个问题,并非所有子控件都正确重绘,这似乎是因为 SizeChanged 事件有时会被丢弃,因此某些子控件会卡在旧的大小值上。随着快速调整大小,这个问题变得更加明显。缓慢的小调整大小会导致它们正确重绘。我猜出于性能考虑,UWP 渲染框架试图减少绘制时发生的工作量。
这样做的正确方法是什么?和/或如果我继续使用 SizeChanged,我如何才能确保呈现最终值,或者减少完成的工作以便接收所有 SizeChanged 事件?
(带 Win10 16299 SDK)
更新:SizeChanged 的不当行为部分是由于我对事件处理程序逻辑的错误排序。但是,在一些门槛框架中,应该定位相同的对象没有对齐。进一步检查,这似乎是网格定位中的一个错误。
【问题讨论】: