Uno 平台中的 UIElement.InvalidateArrange() 和 UpdateLayout() 替代方案

Posted

技术标签:

【中文标题】Uno 平台中的 UIElement.InvalidateArrange() 和 UpdateLayout() 替代方案【英文标题】:UIElement.InvalidateArrange() and UpdateLayout() Alternatives in Uno Platforms 【发布时间】:2020-10-21 03:49:26 【问题描述】:

似乎 Uno 平台不支持 UIElement 中的 InvalidateArrange() 和 UpdateLayout() 方法。在构建现有的 UWP 项目时,可能会出现如下警告:

...\Source\UserControls\View\TableView.xaml.cs(743,17,743,39): warning Uno0001: Windows.UI.Xaml.UIElement.InvalidateArrange() is not implemented in Uno
...\Source\UserControls\View\TableView.xaml.cs(745,17,745,34): warning Uno0001: Windows.UI.Xaml.UIElement.UpdateLayout() is not implemented in Uno

建议的替代方案是什么? UIElement 应该如何在 Uno 中失效然后更新?我注意到 InvalidateMeasure() 似乎已实现。

在 UWP 中,必须手动使测量和排列无效,然后强制更新,否则会发生故障。这是否是 UWP 内部问题在这里可能并不重要。

【问题讨论】:

【参考方案1】:

虽然这些方法尚未在所有平台上实现,但无论如何调用它们是安全的。

您可能仍需要调用 UIElement.InvalidateMeasure() 才能在 Uno 上正常工作。

【讨论】:

好的,感谢您的反馈。如果我可以调用 InvalidateArrange() 和 UpdateLayout() 而不抛出未实现的异常,我就不会费心为 Uno Platform 更改此代码。 InvalidateMeasure() 也已在代码库中使用 InvalidateArrange() 调用。

以上是关于Uno 平台中的 UIElement.InvalidateArrange() 和 UpdateLayout() 替代方案的主要内容,如果未能解决你的问题,请参考以下文章

Uno 平台 一 WinUI终极跨平台方案

MAUI 和 Uno 平台有啥区别?

在 Uno 平台上合并音频和视频

是否可以在支持所有平台的 Uno 平台上使用 Blend for Visual Studio?

如何将第三方库添加到 UNO 平台 WebAssembly 项目

为啥arduino uno只能保留两位小数