Ich habe ein Kontextmenü im LongListSelector. Diese Liste wird zur Laufzeit erstellt und aktualisiert.
Hier ist die Methode, die das Klickereignis des Menüpunkts behandelt
private void RemoveSave_OnClick(object sender, RoutedEventArgs e)
{
var menuItem = (MenuItem)sender;
var saveViewModel = menuItem.DataContext as SavesViewModel;
EmuStorageMgr.Instance.DeleteSave(saveViewModel.SavedGame.SaveFolder);
App.ViewModel.RescanSaves();
}
Die folgende Methode füllt die Liste SavedGames auf
public ObservableCollection SavedGames { get; private set; }
public void RescanSaves()
{
SavedGames.Clear();
var saves = EmuStorageMgr.Instance.GetSaves();
foreach (var save in saves)
{
SavedGames.Add(new SavesViewModel(save));
}
this.IsSavesLoaded = true;
NotifyPropertyChanged("SavedGames");
}
Also, wenn die SavedGames-Sammlung zum ersten Mal gefüllt wird, funktioniert es perfekt, aber wenn sich die Sammlungen ändern (alte Elemente gelöscht werden, neue hinzugefügt werden), beobachte ich ein eigenartiges Verhalten. Wenn das OnClick-Ereignis ausgelöst wird, sehe ich, dass menuItem.DataContext nicht für das Menüelement ist, auf das ich geklickt habe, sondern für einige alte Menüelemente, die gelöscht wurden.