2016-09-19 106 views
0

我是UWP編程中的新成員。並有一些問題。網格生成(C#UWP)

我有數據(訂單)的JSON。有一些訂單。

我需要生成帶有文本字段的網格。

現在我有XAML這樣的:

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

和下載數據的TextBlock這樣的:

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,這將是下一步,在這裏我專注於基礎知識。正如你看到的,我們使用的DataTemplate中的數據綁定(這是{}綁定的東西)

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

因此,對於重複項目使用的GridView(或ListView如果適合更好)。

那麼對於訂單創建一個類:

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

當然,您可以將它們用作Model類(如我在示例中使用Order類)。 – gregkalapos

+0

我有一些問題。我可以在哪裏與您聯繫? – Eugene