我試圖構建一個簡單的面板,其中包含一個孩子並將其對齊到最近的網格大小。我很難弄清楚如何通過覆蓋MeasureOverride和ArrangeOverride來做到這一點。需要幫助瞭解WPF MeasureOverride和ArrangeOverride的無限大小和0大小
以下是我所追求的:我希望我的小組告訴它的主人:(a)它希望儘可能大,然後(b)當它發現這個尺寸是什麼時,尺寸會自己調整,其子UIElement根據最近的較小的捕捉點。因此,如果我們捕捉到10位,並且我可以位於不大於192x184的區域,那麼面板會告訴其父容器「我的實際尺寸將爲190x180」。這樣,任何接近我的控制的東西都可以與其邊緣對齊,而不是潛在的空間。
當我把我的面板放到一個Grid中時,我得到0或PositiveInfinity(我忘了)覆蓋中的傳入大小,但是我需要知道的是「我的空間實際上可以有多大?不是無窮大..
問題的一部分我認爲是什麼WPF考慮PositiveInfinity的魔術值和大小爲0。我需要一種方法來說,通過MeasureOverride「我可以儘可能的大,你可以讓我」,並在ArrangeOverride實際上大小的快照大小。
或者我是否完全錯誤的方式?測量和排列看起來非常複雜,只是在Reflector中的標準面板代碼中漫遊一下。