2017-07-15 20 views
-1

プログラムを実行すると、XMLファイルからlistBox(lstBox)が読み込まれます。 それから、XMLファイルから要素または連絡先を削除するコードがあり、listBoxからその項目を削除したいと思います。 lstBox.Items.Clear()またはRemoveAtを使用して削除しようとすると、致命的なエラーエラーが発生します。これは明らかに、データソースとしてアイテムソースがあるためです。ListBoxをクリアすると致命的なエラーが発生するC#UWP

これは私が達成しようとしていることを説明しています。 enter image description here

ここに、すべてのコードが貼り付けビンにあります。私は、関連する方法であると信じる何

https://pastebin.com/CFs21njZ 

は、任意のヘルプ

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(); 
     } 

そして

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(); 
      } 
     } 

乾杯です。

答えて

2

ListBox.ItemSourceプロパティを 'myList'にバインドした場合、なぜしません。 myList.Clear();

ItemsとItemSourceの両方のプロパティとのやり取りは、例外をスローする可能性があります。

関連する問題