如何制作加载屏幕

本文关键字:屏幕 加载 何制作 | 更新日期: 2023-09-27 18:08:20

我正在编写UWP应用程序,我下载了JSON,反序列化并绑定。

代码如下:

public async void Down()
{
    WritingToTable wrt = new WritingToTable();
    wrt.Writing();
    RestAPI rest = new RestAPI("http://simplegames.com.ua/wp-json/wc/v1/",
        "ck_9d64c027d2c5f81b8bed3342eeccc6d337be813d", "cs_60697b1e6cbdeb8d62d19e0765e339f8e3334754");
    WCObject wc = new WCObject(rest);
    //Get all products
    var orders = await wc.GetOrders(new Dictionary<string, string>()
    {
        {"per_page", "100"}
    });
    string products = orders.ToFormattedJsonString();
    List<RootObject> rootObjectData = JsonConvert.DeserializeObject<List<RootObject>>(products);
    foreach (RootObject root in rootObjectData)
    {
        string date = root.date_created;
        string name = root.billing.first_name;
        Orders = new ObservableCollection<RootObject>(rootObjectData)
        {
            new RootObject {date_created = date}
        };
        OrdersGridView.ItemsSource = Orders;
    }
}

如何制作加载屏幕?例如,当数据正在下载和绑定时,应用程序显示加载屏幕,当所有完成的应用程序显示数据。

如何制作加载屏幕

有很多方法可以在UWP中创建加载屏幕。这完全取决于你想要达到什么目标。从你的问题中,我明白你的目标是阻止用户与应用程序的交互,而数据正在加载,并显示一个UI,通知用户关于加载操作。

最简单的方法是在xaml中定义一个网格。像这样
<Grid 
        Background="{ThemeResource ABrushResource}" 
        Canvas.ZIndex="1"
        Visibility="{Binding IsLoading, Converter = {StaticResource BooleanToVisibilityConverter}">
        <!--anything else you want to show-->
        <ProgressBar 
            IsIndeterminate="True" 
            VerticalAlignment="Center"             
            />
    </Grid>

确保Grid在可见时覆盖整个页面。使用画布。如有必要,将其放在任何其他内容的上方。

你可以在ViewModel和BooleanToVisibilityConverter中使用布尔属性来控制Grid的可见性。您可以自己编写转换器,也可以在网上找到它

所以当你启动对你的服务的调用时,你可以这样做。

try{
 IsLoading = true;
 var orders = await wc.GetOrders(new Dictionary<string, string>() {
                { "per_page", "100" }});
} 
catch (Exception ex)
{
  // handle any exceptions, e.g. network exceptions
}
finally
{
    IsLoading = false;
}