對於我來說,這將是邏輯,如果的MeasureOverride計算FrameworkElement的和ArrangeOverride只是位置的子元素的大小。但ArrangeOverride不僅安排子元素。它也計算了我不明白的FrameworkElement的大小。爲什麼不能MeasureOverride計算最終大小,那是多少?爲什麼ArrangeOverride重新計算的最終大小
1
A
回答
1
因爲您的元素可能不是屏幕上唯一的元素。
佈局不是那麼簡單。 WPF必須計算出它必須使用的實際物理空間,然後計算每個元素需要多少空間,如果可能的話,按比例調整請求的數量,然後應用它。此外,有些元素可能希望根據分配的空間量進行更改。
This previous answer of mine給你一個比喻。
1
如果您實現自己的面板,用自己的佈局算法,並在您的ArrangeOverride()調用
child.Arrange(rect1)
與Rect1的比孩子的DesiredSize不同,那麼系統可以任意決定忽略Rect1的大小和用途有些不同。我已經看到DesiredSize被使用了,我不確定是否總是這樣。我想說這是類似於bug的東西:)
如果在面板的MeasureOverride()傳遞中計算rect1,則此行爲的解決方法是第二次傳遞該子代時調用Measure() rect1的大小,因此在Arrange()傳遞之前重新計算子對象的DesiredSize。
相關問題
- 1. 重新計算一個ListView的大小
- 2. WPF TextBox重新計算大小
- 3. 什麼是最低VM預算大小?
- 4. 最大 - 最小距離的計算
- 5. 計算頁表的最小和最大大小
- 6. 計算最大字體大小
- 7. 計算最小值和最大值C#
- 8. 什麼是最好的小C++包來計算矩陣的最大特徵值?
- 9. 計算最小值與計算最大值
- 10. C程序將不計算最小和最大(大和小)
- 11. 運行時Qt窗口小部件大小重新計算
- 12. 計算的最小
- 13. 計算最大
- 14. 爲什麼最終的二進制文件的大小比靜態庫的大小要小得多?
- 15. 計算CGContextRotateCTM前的新圖像大小
- 16. Android是什麼加速度計的最小和最大範圍
- 17. 蟒計算最小/最大,標準爲時間序列
- 18. 計算最大小時費率?
- 19. dd:如何計算最佳塊大小?
- 20. 計算最佳窗口大小
- 21. 爲什麼文件大小會重複?
- 22. 什麼是最大的SQL表大小
- 23. 如果知道最大堆大小,如何計算最大對象大小?
- 24. 爲什麼我的urlConnection.getContentLength大小始終爲-1?
- 25. Maths - 計算調整大小的圖像的新大小
- 26. IE8在插入內容時不重新計算div的大小
- 27. PreferenceFragment中的ActionBar不重新計算高度和字體大小
- 28. LWUIT滾動條重新計算的大小錯誤?
- 29. 如何重新計算JComponent的首選大小?
- 30. 在VB .NET中計算目錄大小的最佳方法是什麼?
謝謝。特別是鏈接的答案是好的。您是否有一個示例,最終大小與MeasureOverride返回的大小不同? – Sam
@Sam No我沒有舉手的例子,但是你可以通過從MeasureOverride中返回一個非常大的尺寸來僞造它(並檢查結果),該尺寸包含在某個被限制爲人工小區域的東西中(即它是絕對大小和位置)。 – slugster