UWP有一個設計問題: 存儲佈局操作結果的ActualHeight/ActualWidth始終是一個實數。但是,由於它們經常更新,UWP在更改時不通知。在UWP中綁定另一個元素的大小(寬度/高度)的正確方法是什麼?
高度/寬度確實提供了更改通知,但通常可能是NaN,因爲當對象設置爲伸展以填充父項時。
看起來答案是:不。訂閱SizeChanged並使用ActualHeight和ActualWidth直接調整取決於大小的屬性。
但是,我遇到了後者的另一個問題,那裏並不是所有的子控件都能夠正確重畫,而且這似乎是因爲SizeChanged事件有時會被丟棄,所以一些子控件會被舊的尺寸值卡住。通過快速調整大小,此問題更加明顯。緩慢的小尺寸調整會導致它們正確重畫。我猜測對於性能來說,UWP渲染框架會嘗試減少繪圖時發生的工作量。
什麼是正確的方法來做到這一點?和/或如果我繼續使用SizeChanged,我怎麼能確保呈現最終值,或者減少完成的工作以便接收所有SizeChanged事件?
(W/Win10 16299 SDK)
UPDATE:SizeChanged將所述的不當行爲,部分是由於我的事件處理程序邏輯的亂序。但是,有一些門檻框架,其中應該相同位置的物體未對齊。在進一步的檢查中,這似乎是網格定位中的一個錯誤。
我明白,雖然我的需求是更復雜一點。我在代碼中動態地添加了對象,並通過帶參數的ValueConverter按比例定位它們。正如我所說的,當對象被自動化時,無論元素的大小如何,高度和寬度都是NaN。 –
@NickBauer如果你從不設置它們,'Width'和'Height'將始終爲'NaN'。你可以使用'ActualWidth'和'ActualHeight'或'RenderSize' - 這些屬性在SizeChanged事件之後被初始化。並嘗試使用'x:綁定' - 它'更快,並有更多的功能。 –
@NickBauer我更新了答案,希望我能幫助你。 –