如何制作加载屏幕?

时间:2016-09-23 06:35:58

标签: c# uwp

我正在编写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;
    }
}

如何制作加载画面?例如,当下载数据并且绑定应用程序显示加载屏幕时,所有已完成的应用程序显示数据。

1 个答案:

答案 0 :(得分:4)

您可以通过多种方式在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在可见时覆盖整个页面。如有必要,请使用Canvas.ZIndex将其置于任何其他内容之上。

您可以使用ViewModel中的布尔属性和Grid来控制BooleanToVisibilityConverter的可见性。您可以自己编写转换器或find it online

因此,当您启动对服务的调用时,您可以执行此操作。

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;
}