2016-04-18 10 views
1

Ich habe ein Datagrid, das an eine beobachtbare Auflistung gebunden ist. Wenn ich die Elemente in der beobachtbaren Sammlung aktualisiere, wird das Datenraster nicht aktualisiert. Ich weiß, dass ich benachrichtigen werde nicht feuern, da ich die Sammlung nicht nur die Eigenschaften ändern, also versuche ich, die Elementquelle auf Null und die Neubindung nach der Überprüfung nach Updates, aber das funktioniert nicht. Auch ich habe Artikel ausprobiert. Das einzige, was ich gefunden habe, funktioniert, indem ich auf die PendingChanges-Seite zurück navigiere.Datengrid wird nicht aktualisiert, nachdem Elementquelle auf Null gesetzt wurde

Um eine Vorstellung davon zu bekommen, wie das funktioniert. Ich habe ein Fenster, das eine Seite enthält, und unten ist ein Fenster, das eingerahmt ist. Wenn Sie auf eine Schaltfläche klicken, navigiert es zu dem Fenster, das das Datagrid enthält (ausstehende Änderungen)

Klasse und Seite enthält das Datagrid

public PendingChanges(page blahh) 
{ 
    InitializeComponent(); 
    Datagrid.ItemsSource = obvs_collection; 
} 
public string GetPendingChanges() 
{ 
    PopulatePendingChanges(); 
    return NumberOfItemsPending + " items checked out"; 
} 
private void PopulateCollection() 
{ 
    //obvs_collection.Clear(); this doesn't work 
    //Datagrid.ItemsSource = null this doesn't work 
    foreach (var path in localPath) 
    { 
     obvs_collection.Add(new PendingItem() 
     { 
      ID = blah.Replace("\\",""), 
      Path = path.ToString() 
     }); 
    } 
} 

Klasse/Seite, die mit dem Datenraster

private void CheckChanges() 
{ 
    _pendingChangesPage = new PendingChanges(blah); 
    PendingChangesTb.Text = _pendingChangesPage.GetPendingChanges(); 
} 
+0

nachdem es nulling aus haben Sie versucht Datagrid.Items.Refresh() aufrufen; –

Antwort

1

Ich denke, dass Sie wahrscheinlich nur eine einzige Instanz möchten, anstatt jedes Mal, wenn Sie nach Änderungen suchen, eine neue Instanz zu erstellen.

Try this:

PendingChanges _pendingChangesPage; 

public PendingChanges(page blahh) 
{ 
    InitializeComponent(); 
    Datagrid.ItemsSource = obvs_collection; 
    _pendingChangesPage = new PendingChanges(blah); 
} 

private void CheckChanges() 
{ 
    PendingChangesTb.Text = _pendingChangesPage.GetPendingChanges(); 
} 
1

Sie müssen aktualisieren Sie das Gitter mit seiner .Refersh in dem Seitenrahmen () Funktion, wenn Sie eine Datenquelle aktualisieren, um ihre Änderungen widerzuspiegeln.

Verwandte Themen