【发布时间】:2020-01-10 10:49:08
【问题描述】:
我正在寻找最佳实践,以便在切换布局的可见性时优化 Xamarin Forms 应用程序,以便在调整屏幕大小时显示它们。如果 IsVisible=false,Xamarin Forms 会加载任何布局。所以,我想要优化我的应用程序是,当IsVisible=True 加载布局,如果它变成False,有没有办法“卸载”它,所以它不会占用太多设备内存?因为UWP没有问题,但是内存低的手机也有。
假设我有下一个代码:
<StackLayout IsVisible="False" Orientation="Vertical">
<!-- Make it visible when small screen -->
<CustomView1></CustomView1>
<CustomView2></CustomView2>
</StackLayout>
<StackLayout IsVisible="True" Orientation="Horizontal">
<!-- Make it NON visible when small screen -->
<CustomView1></CustomView1>
<CustomView2></CustomView2>
</StackLayout>
Xamarin 将加载相同的视图 2 次。我在 web 中看起来像,将它从 DOM 中删除(或者在它可见之前不要在 DOM 中加载它),但是对于 Xamarin Forms。因此,该应用在不需要时不会加载视图,并且我希望在运行时在窗口应用调整大小时拥有它。
PS:可以通过使用 OnIdiom.Phone、OnIdiom.Tablet 和 OnIdiom.Desktop 来完成,但最后,如果 UWP 窗口应用程序调整大小,我将无法获得所需的视图。
【问题讨论】:
-
嗨,Esteban 您的示例代码正是您想要呈现的吗?布局内的视图完全相同但方向不同?还是只是简单的伪代码使您的问题更易于阅读?如果是前者 - 您可以在代码中绑定方向属性。首次加载页面时,使用 Essentials.DeviceInfo 类获取宽度和高度并设置适合屏幕大小的方向。对于 UWP,在窗口调整大小时添加一个侦听器,并在需要时更改方向。如果这是你想要的,我会用代码 sn-ps 添加一个答案。
-
我一直在寻找的是 ControlTemplate 的使用,查看这篇文章:xamboy.com/2019/01/18/using-control-templates-in-xamarin-formsAdam,它是伪代码,是的。这与方向无关,但我认为控制模板可以满足我的需求
-
在您的情况下,您可以在后面的代码中绑定 IsVisible 的值并在运行时更改它。
标签: xamarin xamarin.forms responsive-design