2012-04-13 81 views
0

我實際上顯示在我的Listbox這個我從XML回顧的項目列表上。當我點擊一個項目時,我將回到相同的方法並創建一個新列表以顯示不同的項目。Listbox刷新和綁定wp7

我想知道爲什麼它不清除以前的列表。

這是我使用的代碼,我不知道這一點..

if (e.Error == null) 
     { 
      // Retrieving the subfolders 
      XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None); 
      XNamespace aNamespace = XNamespace.Get("http://schemas.datacontract.org/2004/07/System.IO"); 

      var folders = from query in xdoc.Descendants(aNamespace.GetName("DirectoryInfo")) 
          select new Folder 
          { 
           Name = (string)query.Element("OriginalPath"), 
          }; 

      ObservableCollection<Folder> LFolders = new ObservableCollection<Folder>(); 

      foreach (Folder f in folders) 
      { 
       LFolders.Add(f); 
      } 

      listBox1.ItemsSource = LFolders; 
      listBox1.SelectionChanged += new SelectionChangedEventHandler(listBox1_SelectionChanged); 
     } 

回答

1

兩個建議:

  1. 考慮使用MVVM模式,然後保存並在更新的ObservableCollection查看模型。
  2. 在XAML中設置SelectionChanged事件,而不是現在設置的位置。對於此方法的每次調用,您都將附加的事件處理程序附加到listBox1。
+0

第二個答案我該怎麼做?我的意思是,我已經添加了一個事件處理程序 – Kiwimoisi 2012-04-16 14:14:23

+0

只需在XAML中設置它,然後刪除代碼後面的設置。現在它被設置在代碼後面的for循環中,所以它被設置多次。 – KodeKreachor 2012-04-16 14:49:13

0

如果您在設置新值之前將Itemssource設置爲null,我相信會起作用。此外,您可以嘗試使LFolders成爲類變量。當您開始該方法時,請清除該集合,然後添加到該集合中。綁定到列表框的可觀察集合將負責更新列表框。