Xamarin表单 - 加载页面最佳实践

时间:2017-11-13 17:16:27

标签: c# xamarin.forms

我想创建一个" loader"在我的ContentView加载时显示。

在YouTube应用中使用此功能:

enter image description here

如您所见,当我点击标签按钮时,会出现一个加载程序。

但是在Xamarin.Forms中,我不知道该怎么做,因为ContentView没有OnAppearing隐藏我的加载器。 (因为我的加载器将在我的ContentView的同时显示)。 当我点击我的按钮时,我的应用程序"冻结了#34;在200ms左右...不利于用户体验...

这就是为什么我来这里,显示我的内容的最佳做法是什么?

由于

2 个答案:

答案 0 :(得分:1)

您可以在XAML的绝对布局中添加加载图像和网格(或任何您需要的),如下所示:

<AbsoluteLayout>
    <Grid ... IsVisible="{Binding IsBusy, Converter={StaticResource InvertBooleanConverter}}"> ... </Grid>
    <Image ... IsVisible="{Binding IsBusy}" />
</AbsoluteLayout>

在ViewModel中创建一个名为IsBusy的属性,如下所示:

bool _isBusy = true;
public bool IsBusy
{
    get
    {
        return _isBusy;
    }
    set
    {
        _isBusy = value;
        OnPropertyChanged(nameof(IsBusy));
    }
}

当数据完全加载时,在ViewModel中将IsBusy设置为false。这会导致图像一直显示,直到数据加载,当它被满满的数据替换时。

您需要像这样创建InvertBooleanConverter转换器:

public class InvertBooleanConverter : IValueConverter
    {
        public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return !(bool)value;
        }
        public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return !(bool)value;
        }
    }

答案 1 :(得分:0)

我使用此插件来实现加载屏幕,请查看https://github.com/rotorgames/Rg.Plugins.Popup