2016-07-20 4 views
3

Speichern von Daten in einer SQLite-Datenbank, die Daten werden in einer Listenansicht präsentiert, wenn ich einen neuen Eintrag in der Datenbank hinzufügen, wie kann ich die ListView automatisch aktualisieren , momentan muss die App geschlossen und erneut geöffnet werden, damit die Informationen aktualisiert werden können.eine Listview aktualisieren, wenn ein neues Element zur SQLite-Datenbank hinzugefügt wird

public MainPage() 
    { 
     this.InitializeComponent(); 
     TestListViewBinding();   
    } 

    private void TestListViewBinding() 
    { 
     var db = new SQLiteConnection(new SQLitePlatformWinRT(), App.path); 
     var Ingredients = new List<Ingredient>(); 

     { 
      Ingredients = db.Table<Ingredient>().ToList(); 
     } 

     TestView.ItemsSource = Ingredients; 
    } 

XAML

<ListView x:Name="TestView" Grid.Row="2" Margin="8,0" ItemsSource="{Binding , Mode=TwoWay}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid Width="auto" HorizontalAlignment="Stretch" > 
        <TextBlock Grid.Column="0" Text="{Binding IngredientName, Mode=TwoWay}"/> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
+0

Hoffnung, dass – matthewfuller

Antwort

0

können Sie ObservableCollection benutzen, um Ihre Liste Ingredients für die ItemsSource des ListView zu ersetzen.

Die ObservableCollection bietet Benachrichtigungen, wenn Elemente hinzugefügt bekommen, entfernt oder wenn die gesamte Liste aktualisiert wird, zum Beispiel wie folgt aus:

public ObservableCollection<Ingredient> IngredientsCollection = new ObservableCollection<Ingredient>(); 

private void TestListViewBinding() 
{ 
    var db = new SQLiteConnection(new SQLitePlatformWinRT(), App.path); 
    var Ingredients = new List<Ingredient>(); 

    { 
     Ingredients = db.Table<Ingredient>().ToList(); 
    } 
    foreach (var Ingredient in Ingredients) 
    { 
     IngredientsCollection.Add(Ingredient); //This is important 
    } 
    TestView.ItemsSource = IngredientsCollection; 
    //TestView.ItemsSource = Ingredients; 
} 

Dann, wenn Sie Daten zur Datenbank hinzufügen, nicht vergessen Um Daten zu dieser "IngredientsCollection" hinzuzufügen, wird das Element ListView automatisch hinzugefügt, nachdem die Daten dieser Sammlung hinzugefügt wurden.

+0

immer diese Fehlermeldung hilft: Uneinheitliche Zugänglichkeit: Feldtyp ‚ObservableCollection ‘ ist weniger zugänglich als Feld ‚MainPage.IngredientsCollection‘ wissen Sie, wohin ich gehe falsch? – matthewfuller

+0

@matthewfuller, ist 'Ingredient' der Name Ihres Datenmodells? Mache dein Modell und deine Eigenschaften für die Veröffentlichung verbindlich. –

+0

Das ist das Datenmodell, richtig? 'Klasse Bestandteil { // ID [Primärschlüssel] [AutoInkrement] public int Id {get; einstellen; } öffentliche Zeichenkette IngredientName {get; einstellen; } öffentliche Zeichenfolge Suffix {get; einstellen; } öffentliche Zeichenkette IngredientCategory {get; einstellen; } } ' – matthewfuller

Verwandte Themen