列表框刷新和绑定wp7

时间:2012-04-13 16:43:18

标签: c# windows-phone-7 binding

我实际上在我的列表框中显示了我从XML中检索的项目列表。当我点击一个项目时,我将返回相同的方法并创建一个新列表以显示不同的项目。

我想知道为什么它没有清​​除以前的清单。

这是我使用的代码,我无法弄清楚..

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

2 个答案:

答案 0 :(得分:1)

两个建议:

  1. 考虑使用MVVM模式,然后在视图模型上存储和更新ObservableCollection。
  2. 在XAML中设置SelectionChanged事件,而不是现在设置它的位置。对于此方法的每次调用,您都会向listBox1附加一个附加事件处理程序。

答案 1 :(得分:0)

如果在设置新值之前将Itemssource设置为null,我相信这样可行。此外,您可以尝试使LFolders成为类变量。当您开始该方法时,清除该集合,然后添加到它。绑定到列表框的可观察集合将负责更新列表框。