2016-08-26 4 views
0

を(C#UWP)を表示していない私はこのようなリストを作成しました:データ

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


     } 
    } 
} 

私の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" 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分ほど待っていましたが、アプリがクラッシュせず、データが表示されませんでした

なぜデータが表示されませんでしたか?

ありがとうございました。

答えて

1

x:Bindは、ページがロードされたときにGridViewのItemsSourceが設定されることを意味する1回限りのバインドを実行しています。この時点でOrdersプロパティがnullのままであるため、null値に設定されています。

非同期メソッドでは、データで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); } 
} 
+0

ありがとうございました –

+0

大変感謝!!! –