我有媒體文件兩個一套的ObservableCollection相等,不失WPF的綁定
的的ObservableCollectionMediaControlClass.GetInstanze().MediaLibrary
我有很多這樣的ObservableCollection的WPF綁定的。 在某些情況下,我必須將這個集合表單重新填充一個XML文件。在XML文件中是20.000 MediaFiles。我嘗試了兩種方法。
第一種方式:
serializer = new XmlSerializer(typeof(System.Collections.ObjectModel.ObservableCollection<MediaFile>));
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
xmlReaderSettings.CheckCharacters = false;
using (XmlReader reader = XmlReader.Create(Environment.CurrentDirectory + "\\Notes.xml", xmlReaderSettings))
{
o = serializer.Deserialize(reader);
MediaControlClass.GetInstanze().MediaLibrary.Clear();
foreach (var i in (System.Collections.ObjectModel.ObservableCollection<MediaFile>)o)
MediaControlClass.GetInstanze().MediaLibrary.Add(i);
}
我每天媒體文件添加到MediaControlClass.GetInstanze()MediaLibrary這是非常緩慢。
方式二:
serializer = new XmlSerializer(typeof(System.Collections.ObjectModel.ObservableCollection<MediaFile>));
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
xmlReaderSettings.CheckCharacters = false;
using (XmlReader reader = XmlReader.Create(Environment.CurrentDirectory + "\\Notes.xml", xmlReaderSettings))
{
o = serializer.Deserialize(reader);
MediaControlClass.GetInstanze().MediaLibrary = (System.Collections.ObjectModel.ObservableCollection<MediaFile>)o;
}
這是快,但我不得不重新綁定了很多WPF控件。
有沒有辦法做到這一點,而無需重新綁定?
如果對象是正在被轉換到的類型,則類型轉換很快。 – 2011-03-18 12:39:25
好的,謝謝馬特:)只是看起來像一個可能的罪魁禍首,因爲它是一個巨大的集合,所以即使相對便宜的東西也可以加起來。 – dain 2011-03-18 12:43:34
是的。我沒有注意到這裏有20,000個文件! – 2011-03-18 17:35:17