2016-09-19 10 views
0

UWPプログラミングの新機能です。そして何か質問があります。グリッド生成(C#UWP)

私はデータ(注文)を持つJSONを持っています。いくつかの注文があります。

テキストフィールドを含むグリッドを生成する必要があります。このようにTextBlockの

<StackPanel Height="1020" Width="350" BorderBrush="#FFFDFCFC" BorderThickness="0,0,1,0"> 
      <Grid Height="204" BorderBrush="#FFFBF8F8" BorderThickness="0,0,0,1"> 
       <TextBlock x:Name="date1" HorizontalAlignment="Left" TextAlignment="Center" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="350" Height="50" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" Foreground="White" /> 
       <TextBlock x:Name="adress1" TextAlignment="Center" HorizontalAlignment="Left" Margin="0,146,-1,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="58" Width="350" FontFamily="SF UI Display" FontSize="20" FontWeight="Light" Foreground="White" /> 
       <TextBlock x:Name="name1" HorizontalAlignment="Left" TextAlignment="Center" Margin="0,86,-1,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="60" Width="350" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" Foreground="White" Padding="0,0,0,0"/> 
      </Grid> 
      <Grid Height="204" BorderBrush="#FFFBF8F8" BorderThickness="0,0,0,1"> 
       <TextBlock x:Name="date2" TextAlignment="Center" HorizontalAlignment="Left" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="350" Height="50" Foreground="White" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" /> 
       <TextBlock x:Name="adress2" TextAlignment="Center" HorizontalAlignment="Left" Margin="0,145,-1,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="59" Width="350" FontFamily="SF UI Display" FontSize="20" FontWeight="Light" Foreground="White" /> 
       <TextBlock x:Name="name2" HorizontalAlignment="Left" Margin="0,87,-1,0" TextAlignment="Center" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="64" Width="350" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" Foreground="White" Padding="0,0,0,50"/> 
      </Grid> 
      <Grid Height="204" BorderBrush="#FFFBF8F8" BorderThickness="0,0,0,1"> 
       <TextBlock x:Name="date3" HorizontalAlignment="Left" TextAlignment="Center" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="350" Height="50" Foreground="White" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" /> 
       <TextBlock x:Name="adress3" HorizontalAlignment="Left" TextAlignment="Center" Margin="0,143,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="350" Height="61" FontFamily="SF UI Display" FontSize="20" FontWeight="Light" Foreground="White" /> 
       <TextBlock x:Name="name3" HorizontalAlignment="Left" TextAlignment="Center" Margin="0,86,-1,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="60" Width="350" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" Foreground="White" Padding="0,0,0,50"/> 

      </Grid> 
      <Grid Height="204" BorderBrush="#FFFBF8F8" BorderThickness="0,0,0,1"> 
       <TextBlock x:Name="date4" HorizontalAlignment="Left" TextWrapping="Wrap" TextAlignment="Center" Text="" VerticalAlignment="Top" Width="350" Height="50" Foreground="White" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" /> 
       <TextBlock x:Name="adress4" HorizontalAlignment="Left" Margin="0,153,0,0" TextWrapping="Wrap" TextAlignment="Center" Text="TextBlock" VerticalAlignment="Top" Height="61" Width="342" FontFamily="SF UI Display" FontSize="20" FontWeight="Light" Foreground="White" /> 
       <TextBlock x:Name="name4" HorizontalAlignment="Left" TextAlignment="Center" Margin="0,86,-1,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="60" Width="350" FontFamily="SF UI Display" FontSize="30" FontWeight="Light" Foreground="White" Padding="0,0,0,50"/> 
      </Grid> 

とダウンロードデータ:

今、私はこのようなXAMLを持って

try 
{ 
    date1.Text = convertedDate; 

    adress1.Text = orders[0].shipping.address_1.ToString() + "      " + orders[0].shipping.address_2; 
    name1.Text = orders[0].billing.first_name.ToString(); 
    string order =orders[0].ToFormattedJsonString();   
} 
catch (Exception e) 
{ 
    Debug.WriteLine(e.Message); 
    Debug.WriteLine(e.StackTrace); 
} 

string date_2 = orders[1].date_created + "+0:00"; 
DateTime dt2 = DateTime.Parse(date_2); 
string convertedDate2 = dt2.ToString("dd/MM/yyyy HH:mm:ss"); 

try 
{ 
    date2.Text = convertedDate2; 
    adress2.Text = orders[1].shipping.address_1.ToString() + "      " + orders[1].shipping.address_2; 
    name2.Text = orders[1].billing.first_name.ToString(); 
} 
catch (Exception e) 
{ 

    Debug.WriteLine(e.Message); 
    Debug.WriteLine(e.StackTrace); 
} 

しかし、これは良いではありません。どのようにjsonのjsonオブジェクト数を数え、それに応じてグリッドを生成するのですか?これに続いてデータを入力してください

+0

これは行く方法ではありません...この問題を避けるためにアイテムを繰り返すクラスがあります(たとえば、GridViewを見てください。http://www.codeproject.com/Articles/1081343/Implementing-Windows- GridView-for-UWP-Apps) – gregkalapos

答えて

3

このトピックに関する記事(または書籍)を読むことをお勧めしますが、ここではこれを行う方法についての短い夏。

これはMVVMを使用しない場合の次のステップですが、ここでは基本について説明します。アイテムを繰り返すので

、(それがより良いフィットする場合、またはリストビュー)のGridViewを使用します。

<GridView Background="Black" x:Name="OrdersGridView" > 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Date}" /> 
       <TextBlock Text="{Binding Address}" /> 
       <TextBlock Text="{Binding Name}"/> 
      </StackPanel> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

あなたは私たちが(それが{バインディング}ものだ)のDataTemplateでデータバインディングを使用ご覧のよう。

その後受注のためのクラスを作成します。

public class Order { 
    public DateTime Date { get; set; } 
    public string Address { get; set; } 
    public string Name { get; set; } 
} 

は、その後の後ろの背後にあるコードでの受注のためのプロパティを作成:

public ObservableCollection<Order> Orders { get; set; } 

その後、注文を移入し、GridViewコントロールのItemSourceを設定(これはあなたのjsonフェッチコードです、ここで私は理解しやすくするためにいくつかのものをハードコードします...):

//Populate Orders: 
      Orders = new ObservableCollection<Order> { new Order { Address = "dsfsd", Date = DateTime.Now, Name = "Name" } , 
       new Order { Address = "dsfsd", Date = DateTime.Now, Name = "Name" }, 
        new Order { Address = "dsfsd", Date = DateTime.Now, Name = "Name" } 
       }; 

      OrdersGridView.ItemsSource = Orders; 

MVVMを学ぶ必要がありますが、これが最初のステップになります。

+0

こんにちは。 見ていますすでにいくつかのクラスがあります。 jsonからデータベースにデータを書き込むためにそれらを使用します。 使用できますか? 私はリンク上にコードを追加します [pastebin](http://pastebin.com/6LTX1t5F) – Eugene

+0

もちろん、モデルクラスとして使用することができます(私のサンプルではOrderクラスを使用しています)。 – gregkalapos

+0

私はいくつか質問があります。どこに連絡することができますか? – Eugene