2016-08-25 5 views
1

Попробуйте сделать Data BindingПривязка данных (C# UWP)

Запись этого класса

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


    } 

Это XAML, где нужно данные, которые будут показаны

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

И там файл 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) 
     { 


     } 
    } 
} 

Когда я компилирую У меня есть эта ошибка:

Error

Как я могу решить эту ошибку.

О каком индексе говорят?

Спасибо за помощь.

+0

Вы отлаживали приложение? Вы можете ответить на свой вопрос с помощью отладчика. – Reddy

+0

Да. Я отлаживаю. Вы можете увидеть ошибку, которую показывает отладчик на снимке экрана @Reddy –

ответ

2

Удалить заказ [0], заказать [1], ... из нижеследующего кода. Это должно решить вашу проблему.

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

Вы пытаетесь получить доступ к 0-му элементу из Заказов, когда в коллекции нет данных.

+0

Я пишу заказы [0] .date_created, не вижу эту ошибку. Но мой экран белый. Как я могу сделать его черным? –

+0

Как вы ожидаете, что на экране появится черный цвет, если в вашем источнике нет данных? Внесите изменения в ваш XAML соответственно. – Reddy

+0

с использованием системы; с использованием System.Collections.Generic; с использованием System.Linq; с использованием System.Threading; общественного класса Программа { \t общественного класса Заказы { общественная строка Дата {получить; задавать; } public string Имя {get; задавать; } public string Адрес {get; задавать; } } \t \t государственной статической силы Main() \t { \t \t вар заказ = новый список (); order.Add (новые заказы {Date = "" + order [0] .Date}); order.Add (новые заказы {Date = ""}); \t} } Недействительный. – Reddy

Смежные вопросы