我正在编写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;
}
}
如何制作加载画面?例如,当下载数据并且绑定应用程序显示加载屏幕时,所有已完成的应用程序显示数据。
答案 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;
}