数据不显示(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分钟,但应用程序没有崩溃,数据没有显示

为什么我没有看到数据?

非常感谢你的帮助!

数据不显示(c# UWP)

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