2013-12-02 2 views
0

Я пытаюсь проанализировать веб-API. На основе полученных записей я хочу показать всю транзакцию банковского счета (список всех записей), связанных с одной учетной записью, и хочу показать это в динамически созданный текстовый блок. Похожие, как это: -Как динамически создавать текстовые блоки на основе проанализированных записей

enter image description here

Вот мой парсер класс

public class Transaction 
{ 
public string dec { get; set; } 
public string amt { get; set; } 
public string date { get; set; } 
} 

public class Loginresponse 
{ 
public List<Transaction> transaction { get; set; } 
} 

Здесь DEC- Описание, amt- Сумму, я успешно проанализирован веб-API.

<Grid Name="accountdetails" Margin="0,0,0,0" Background="#66ac22" HorizontalAlignment="Left" Width="456" Grid.ColumnSpan="2"> 
        <TextBlock Grid.Row="0" VerticalAlignment="Center" Margin="10,0,0,0" Text="No." Foreground="White"/> 
        <TextBlock VerticalAlignment="Center" Margin="66,0,319,0" Text="Date." Foreground="White"/> 
        <TextBlock VerticalAlignment="Center" Margin="166,0,140,0" Text="Description" Foreground="White"/> 
        <TextBlock VerticalAlignment="Center" Margin="364,0,0,0" Text="Amount" Foreground="White"/> 
        <ItemsControl Name="accdetails" ItemsSource="{Binding Path=transaction}" Margin="0,10,0,-440"> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal" Background="Black"> 
            <TextBlock Text="{Binding dec}" Foreground="Black" /> 
            <TextBlock Text="{Binding amt}" Foreground="Black"/> 
            <TextBlock Text="{Binding date}" Foreground="Black"/> 
           </StackPanel> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
        </Grid> 

Мой класс файл: -

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 
     try 
     { 
      IDictionary<string, string> parameters = this.NavigationContext.QueryString; 
      if (parameters.ContainsKey("key")) 
      { 
       var root1 = JsonConvert.DeserializeObject<RootObject>(parameters["key"]); 
       this.accdetails.DataContext = root1.loginresponse.transaction; 
      } 
     } 
     catch (Exception) 
     { 

     } 
    } 

Сейчас я не в состоянии понять, как динамически создавать TextBlock и показать все это Информация получена из парсера. Было бы оценено любое руководство, предложение или правильный метод написания кода с деталями.

<Grid x:Name="LayoutRoot"> 
    <phone:Pivot Title="" Style="{StaticResource PivotStyle1}"> 

     <phone:PivotItem Header="transactions" FontSize="20"> 
      <Grid Margin="0,0,0,420" Background="#f9f9f9"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
       </Grid.RowDefinitions> 
       <Grid Name="accountdetails" Margin="0,0,0,0" Background="#66ac22" HorizontalAlignment="Left" Width="456" Grid.ColumnSpan="2"> 
        <TextBlock VerticalAlignment="Center" Margin="10,0,0,0" Text="No." Foreground="White"/> 
        <TextBlock VerticalAlignment="Center" Margin="66,0,319,0" Text="Date." Foreground="White"/> 
        <TextBlock VerticalAlignment="Center" Margin="166,0,140,0" Text="Description" Foreground="White"/> 
        <TextBlock VerticalAlignment="Center" Margin="364,0,0,0" Text="Amount" Foreground="White"/> 
        <ListBox x:Name="ListBox1" Margin="5,32,0,-340" 
          Width="450" HorizontalAlignment="Left" Padding="0" VerticalAlignment="Center" 
          ItemsSource="{Binding}" > 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal" > 
            <TextBlock Grid.Column="0" Text="{Binding no}" Foreground="Black" Margin="5,5,0,0" HorizontalAlignment="Left"/> 
            <TextBlock Grid.Column="1" Text="{Binding date}" Foreground="Black" Margin="30,5,0,0" HorizontalAlignment="Left" /> 
            <TextBlock Grid.Column="2" Text="{Binding dec}" Foreground="Black" Margin="40,5,0,0" HorizontalAlignment="Left"/> 
            <TextBlock Grid.Column="3" Text="{Binding amt}" Foreground="Black" Margin="120,5,80,0" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
           </StackPanel> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 

Теперь я получаю список текста, но я не могу показать его правильно в сетках.

ответ

1
Why don't you use a listbox instead? 

Declare a Listbox in xaml like this with textblocks text binding your properties. 

    <Listbox name ="lstBox"> 
     <Listbox.ItemTemplate> 
      <Listbox> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding dec}" /> 
        <TextBlock Text="{Binding amount}" /> 
        <TextBlock Text="{Binding date}" /> 
       </StackPanel> 
      </DataTemplate> 
     </Listbox.ItemTemplate> 
    </Listbox> 

Now in cs file. 

Для первых 25 записей.

List<Type> newList=new List<Type>(); 

int count =your list.Count; 

    if(count >25) 
    { 
     for (int i = 0; i < your list.Count; i++) 
     { 
     if(i<=24) 
     { 
      newList.Add(your list[i]}; 
     } 
     } 
    } 

lstBox.ItemSource = newList;

Попробуйте это.

+0

Как я могу ограничить количество отображаемых записей? Я просто хочу показать последние 25 записей только из всех транзакций, что я должен делать ??? – Dexto

+0

Я отредактировал свой ответ. –

+0

вам нужно будет проанализировать полученный вами веб-ответ в виде списка типов в качестве класса парсера. –

2

Один простой вариант - использовать ItemsControl, это связывается с коллекцией элементов и отображает каждый e, используя заданный вами шаблон данных.

например.

<ItemsControl ItemsSource="{Binding Path=transaction}" > 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding dec}" /> 
       <TextBlock Text="{Binding amount}" /> 
       <TextBlock Text="{Binding date}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

Данные не отображаются. Я обновил свой код, пожалуйста, посмотрите. – Dexto

+0

Как я могу ограничить количество записей в би? Я просто хочу показать последние 25 записей только из всех транзакций, что я должен делать ??? – Dexto

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