У меня есть ObservableCollection MediaFile
MediaControlClass.GetInstanze().MediaLibrary
У меня много привязок WPF этой ObservableCollection.В некоторых случаях мне нужно пополнить эту коллекцию формой XML-файла.В XML-файле находятся 20 000 медиа-файлов.Я попробовал два способа.
Первый способ:
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);
}
Я добавил каждый MediaFile в 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.
Есть ли способ сделать это быстро и без повторного связывания?