UWP有一个设计问题:存储布局操作结果的ActualHeight/ActualWidth始终为实数。但是,由于它们更新得如此频繁,UWP不会在它们更改时通知。
Height/Width确实提供了更改通知,但通常可能是NaN,例如当对象设置为拉伸以填充父对象时。
答案似乎是:订阅SizeChanged并使用ActualHeight和ActualWidth直接调整依赖于大小的属性。
然而,我遇到了后者的另一个问题,不是所有的子控件都能正确地重绘,这似乎是因为SizeChanged事件有时会被删除,因此一些子控件会被旧的大小值卡住。这个问题在快速调试时会变得更加明显。一个缓慢的小调整大小导致他们重新绘制正确。我猜,为了提高性能,UWP渲染框架试图减少绘图时发生的工作量。
什么是正确的方法来做这件事?和/或如果我继续使用SizeChanged,我如何确保最终值被呈现,或者减少所做的工作,以便接收所有SizeChanged事件?
(w/ Win10 16299 SDK)
更新:SizeChanged的错误行为部分是由于我对事件处理程序逻辑的错误排序。但是,有些窗台板框架中的对象位置不一致。在进一步检查,这似乎是一个错误,在网格定位。
1条答案
按热度按时间0x6upsns1#
假设你有两个元素:一个TextBox和一个ComboBox。你想当文本框的大小改变时,组合框的大小也应该改变。请参见this。
如果你想在cs文件中绑定。你可以这样做:
有关代码文件中绑定的更多信息,请参见this和this。