2017-10-31 6 views
0

Ich möchte Layout mit Tabelle auf Seite machen. Im Moment habe ich:UWP Databinding

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <ScrollViewer Grid.Row="0" Margin="10,0,10,0"> 
     <ListView 
      x:Name="NewsList" 
      HorizontalAlignment="Center"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition/> 
          <ColumnDefinition/> 
          <ColumnDefinition/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Margin="15" Grid.Column="0" FontSize="25" Text="{Binding news_time}"/> 
         <TextBlock Margin="15" Grid.Column="1" FontSize="25" Text="{Binding title}"/> 
         <TextBlock Margin="15" Grid.Column="2" FontSize="25" Text="{Binding news_text}"/> 
        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 

     </ListView> 
    </ScrollViewer> 
</Grid> 

ich für meine ObservableCollection Objekte machen wollen Bindung Grid Zeilen hinzufügen dynamisch StackPanel Tags. Hier ist meine .cs Datei.

public class News 
{ 
    public int id; 
    public string news_time; 
    public string title; 
    public string news_text; 
} 

public sealed partial class TermsAndNews : Page 
{ 

    public ObservableCollection<News> newsCollection { get; set; } = 
    new ObservableCollection<News>(); 
// ... 
    // Method called on initialization 
    private async void GetData() 
    { 
     var httpClient = new HttpClient(); 

     var responsetNews = await httpClient.GetAsync("http://localhost:3000/news"); 

     responsetNews.EnsureSuccessStatusCode(); 

     string jsonNews = await responsetNews.Content.ReadAsStringAsync(); 

     this.newsCollection = JsonConvert.DeserializeObject<ObservableCollection<News>>(jsonNews); 

     NewsList.ItemsSource = newsCollection; 
    } 
} 

Nach dem Ausführen des Codes wird nichts angezeigt. Irgendwelche Ideen ?

+0

Sie haben die aktuelle Kollektion ist und nicht die Auffassung mitgeteilt, anstatt den Inhalt der beobachtbaren Sammlung. – Lindsay

Antwort

0

Try

this.newsCollection = ..... 

zu

ObservableCollection<News> tempobcol = ... 

dann Iterieren durch und das Hinzufügen zu newsCollection

Foreach (News n in tempobcol) 
{ newsCollection.Add(n); } 

verändert und schließlich Entfernen

NewsList.ItemsSource = newsColleciton; 

, um es an die XAML hinzuzufügen

<ListView x:Name:"NewsList" ItemsSource:="{Binding newsCollection}"...../>