数据不显示(c# UWP)
本文关键字:UWP 显示 数据 | 更新日期: 2023-09-27 18:04:13
我创建了如下列表:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WooCommerceNET;
using WooCommerceNET.WooCommerce;
namespace xBindDataMilano.Models
{
public class Orders
{
public string Date { get; set; }
public string Name { get; set; }
public string Adress { get; set; }
}
public class OrderManager
{
public static async Task<List<Orders>> GetOrders_1()
{
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();
Debug.WriteLine(" SMOTRET TUT");
var order = new List<Orders>();
order.Add(new Orders { Date = "" + orders[0].date_created, Name = "" + orders[0].billing.first_name, Adress = "" + orders[0].shipping.address_1 + " " + orders[0].shipping.address_2 });
order.Add(new Orders { Date = "" + orders[1].date_created, Name = "" + orders[1].billing.first_name, Adress = "" + orders[1].shipping.address_1 + " " + orders[1].shipping.address_2 });
order.Add(new Orders { Date = "" + orders[2].date_created, Name = "" + orders[2].billing.first_name, Adress = "" + orders[2].shipping.address_1 + " " + orders[2].shipping.address_2 });
order.Add(new Orders { Date = "" + orders[3].date_created, Name = "" + orders[3].billing.first_name, Adress = "" + orders[3].shipping.address_1 + " " + orders[3].shipping.address_2 });
order.Add(new Orders { Date = "" + orders[4].date_created, Name = "" + orders[4].billing.first_name, Adress = "" + orders[4].shipping.address_1 + " " + orders[4].shipping.address_2 });
return order;
}
}
}
试着像这样显示:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using xBindDataMilano.Models;
namespace Milano
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class Test : Page
{
private List<Orders> Orders;
public Test()
{
this.InitializeComponent();
Disp();
}
public async void Disp() {
Orders = await OrderManager.GetOrders_1();
}
private void GridView_ItemClick(object sender, ItemClickEventArgs e)
{
}
}
}
My xaml file:
<Page
x:Class="Milano.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Milano"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:data="using:xBindDataMilano.Models"
mc:Ignorable="d">
<Page.Resources>
<DataTemplate x:DataType="data:Orders" x:Key="BookDataTemplate">
<StackPanel HorizontalAlignment="Center">
<TextBlock FontSize="16" Text="{x:Bind Date}" HorizontalAlignment="Center" Foreground="#FF0C0B0B" />
<TextBlock FontSize="16" Text="{x:Bind Name }" HorizontalAlignment="Center" Foreground="#FF0C0B0B" />
<TextBlock FontSize="10" Text="{x:Bind Adress}" HorizontalAlignment="Center" Foreground="#FF0C0B0B"/>
</StackPanel>
</DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<GridView ItemsSource="{x:Bind Orders}"
IsItemClickEnabled="True"
ItemClick="GridView_ItemClick"
ItemTemplate="{StaticResource BookDataTemplate}">
</GridView>
<TextBlock Grid.Row="1"
Name="ResultTextBlock"
FontSize="24"
Foreground="Red"
FontWeight="Bold"
Margin="0,20,0,0" />
</Grid>
</Page>
但是我得到白色屏幕而不是错误。我等待了大约2分钟,但应用程序没有崩溃,数据没有显示
为什么我没有看到数据?
非常感谢你的帮助!
x:Bind执行一次性绑定,这意味着在加载页面时设置GridView的ItemsSource。它被设置为空值,因为此时您的Orders属性仍然为空。
在你的async方法中,你正在用你的数据初始化Orders属性,但是你从来没有通知GridView属性已经设置。
根据您想要实现的目标,您可以使用Bindings.Update()
请求刷新绑定。这会刷新所有的绑定。
public async void Disp()
{
Orders = await OrderManager.GetOrders_1();
Bindings.Update();
}
或者您可以使用依赖项属性来存储列表,并将绑定更改为单向绑定。
public static readonly DependencyProperty OrdersProperty = DependencyProperty.Register(nameof(Orders), typeof(List<Order>), typeof(Test), new PropertyMetadata(null));
public List<Order>Orders
{
get { return (List<Order>) GetValue(OrdersProperty); }
set { SetValue(OrdersProperty, value); }
}