因此,如果我将绑定放置在将其链接到其父对象的子对象的宽度上ActualWidth
,会发生什么?
我的猜测是,父母测量孩子想要多少宽度,孩子告诉父母 0 宽度,然后在安排期间给父母实际空间,它试图给孩子零,因为孩子不想要。那么给予父级的空间的实际宽度应该会导致绑定改变子级的宽度。在这一点上,我猜想再次执行布局。
但是,这假设绑定不会传播得那么快。当绑定值传播到目标时,我仍然很模糊。这完全取决于父母的实际宽度值何时发生变化。布局完成后会发生这种情况吗?然后装订件更新?每个绑定都会中断当前运行的代码去更新目标值吗?如果不是,如果一个绑定传播需要重绘的更改,然后另一个绑定传播导致重绘的不同更改等,它不会导致问题。
有人问我的实际问题是什么:
所以最初我想有一个控制伸展来填充可用空间。很简单,但我想让它在滚动查看器中。Scrollviewer 在测量期间为其子项提供无限空间。因此,您可以将子控件的宽度和高度绑定到父控件的实际宽度和实际高度;布局做了第二遍,一切似乎都膨胀了。
但是,后来我在控件模板中拉伸控件时遇到了类似的问题,但后来发现我可以设置 minwidth 和 alignment=stretch 让它拉伸。
然而,我清楚地记得早些时候在我的另一个控件上尝试过它并且它不起作用,所以我回过头来试图弄清楚这两种情况之间的区别是什么。基本上它归结为其中一个在堆栈面板中的几个级别。
所以现在我对一个使用绑定,对另一个使用 minwidth plus 对齐方法。不管怎样,我只是对此感兴趣,以确保我做事的方式以后不会产生奇怪的错误。
我希望当宽度或高度发生变化时布局不会立即运行,而是系统会定期重新检查大小变化