简体   繁体   English

数据绑定(C#UWP)

[英]Data Binding (C# UWP)

Try to make Data Binding 尝试进行数据绑定

Write this class 写这个课

    using System;
using System.Collections.Generic;
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()
        {



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


            var order = new List<Orders>();
            order.Add(new Orders { Date = ""+ order[0], Name = ""+ orders[0].billing.first_name , Adress = ""+ orders[0].shipping.address_1 + "                     " + orders[0].shipping.address_2 });
            order.Add(new Orders { Date = "" + order[1], Name = "" + orders[1].billing.first_name, Adress = "" + orders[1].shipping.address_1 + "                     " + orders[1].shipping.address_2 });
            order.Add(new Orders { Date = "" + order[2], Name = "" + orders[2].billing.first_name, Adress = "" + orders[2].shipping.address_1 + "                     " + orders[2].shipping.address_2 });
            order.Add(new Orders { Date = "" + order[3], Name = "" + orders[3].billing.first_name, Adress = "" + orders[3].shipping.address_1 + "                     " + orders[3].shipping.address_2 });
            order.Add(new Orders { Date = "" + order[4], Name = "" + orders[4].billing.first_name, Adress = "" + orders[4].shipping.address_1 + "                     " + orders[4].shipping.address_2 });

            return order;
        }


    }

This is xaml of where data need to be shown 这是需要显示数据的地方

  <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" /> <TextBlock FontSize="16" Text="{x:Bind Name }" HorizontalAlignment="Center" /> <TextBlock FontSize="10" Text="{x:Bind Adress}" HorizontalAlignment="Center" /> </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> 

And there xaml.cs file 还有xaml.cs文件

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


        }

        private void GridView_ItemClick(object sender, ItemClickEventArgs e)
        {


        }
    }
}

When I compile I have this error: 编译时出现以下错误:

错误

How I can solve this error. 我该如何解决这个错误。

About what index it is talking? 关于什么指数呢?

Thank's for help. 感谢帮助。

Remove order[0], order[1],... from below code. 从下面的代码中删除order [0],order [1],...。 This should fix your problem. 这应该可以解决您的问题。

 var order = new List<Orders>();
        order.Add(new Orders { Date = ""+ order[0], Name = ""+ orders[0].billing.first_name , Adress = ""+ orders[0].shipping.address_1 + "                     " + orders[0].shipping.address_2 });
        order.Add(new Orders { Date = "" + order[1], Name = "" + orders[1].billing.first_name, Adress = "" + orders[1].shipping.address_1 + "                     " + orders[1].shipping.address_2 });
        order.Add(new Orders { Date = "" + order[2], Name = "" + orders[2].billing.first_name, Adress = "" + orders[2].shipping.address_1 + "                     " + orders[2].shipping.address_2 });
        order.Add(new Orders { Date = "" + order[3], Name = "" + orders[3].billing.first_name, Adress = "" + orders[3].shipping.address_1 + "                     " + orders[3].shipping.address_2 });
        order.Add(new Orders { Date = "" + order[4], Name = "" + orders[4].billing.first_name, Adress = "" + orders[4].shipping.address_1 + "                     " + orders[4].shipping.address_2 });

You are trying to access 0th element from Orders when there is no data in the collection. 当集合中没有数据时,您正在尝试从Orders访问第0个元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM