2017-07-15 6 views
-1

Lorsque le programme s'exécute, il remplit un contrôle listBox (lstBox) à partir d'un fichier XML. J'ai alors le code pour supprimer un élément ou un contact d'un fichier xml et je veux également supprimer cette entrée de ma listBox. Je reçois une erreur de défaillance catastrophique lorsque j'essaie de l'enlever via lstBox.Items.Clear() ou RemoveAt. C'est apparemment parce que j'ai une source d'article comme liaison de données.Erreur catastrophique lors de la suppression d'un contrôle ListBox C# UWP

Ceci explique ce que j'essaie d'accomplir. enter image description here

Voici tout le code dans le bac de collage.

https://pastebin.com/CFs21njZ 

Ce que je crois être les méthodes pertinentes sont

public async void loadContacts() 
     { 

      StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Contacts.xml"); 
      XmlReader xmlReader = XmlReader.Create(file.Path); 
      while (xmlReader.Read()) 
      { 
       if (xmlReader.Name.Equals("ID") && (xmlReader.NodeType == XmlNodeType.Element)) 
       { 
        lstd.Add(xmlReader.ReadElementContentAsString()); 
       } 
      } 
      DataContext = this; 
      xmlReader.Dispose(); 
     } 

Et

private async void btnDeleteContact_Click(object sender, RoutedEventArgs e) 
     { 
      StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Contacts.xml"); 
      XDocument xdoc = XDocument.Load(file.Path); 
      if (lstBox.SelectedIndex != -1) 
      { 
       xdoc.Element("Contacts") 
        .Elements("Contact") 
        .Where(x => (string)x.Element("ID") == lstBox.SelectedItem.ToString()).Remove(); 
       //lstBox.SelectedIndex = -1; 
       updateXMLFile(xdoc); 

       //lstBox.Items.Clear(); //Causing catastrophic error    

       loadContacts(); 
      } 
     } 

Vive pour toute aide.

Répondre

2

Si vous avez lié la propriété ListBox.ItemSource à 'myList', pourquoi ne pas le faire myList.Clear();

L'interaction avec les éléments et la propriété ItemSource peut entraîner des exceptions et entraînera des exceptions