Измените структуру XML на что-то подобное, как показано ниже, только с одним <Image>
элементом на <Item>
.
<Item>
<Title>Image 1</Title>
<Image FolderName="Images">1.jpg</Image>
</Item>
Тогда это должно работать с относительными путями изображения:
public void LoadImages()
{
imgList.ItemsSource = XDocument.Load("images.xml")
.Descendants("Item")
.Select(item =>
{
var title = item.Element("Title").Value;
var folder = item.Element("Image").Attribute("FolderName").Value;
var file = item.Element("Image").Value;
var path = Path.Combine(folder, file);
return new Picture
{
Title = title,
Img = new BitmapImage(new Uri(path, UriKind.Relative))
};
});
}
Если вам нужны абсолютные пути к файлам, вы можете добавить корневую папку с изображениями к вызову Path.Combine
и удалить UriKind.Relative
.
Вы также должны объявить класс Picture, как показано ниже, для большей гибкостив диапазоне типов вы можете перейти к свойству Img
:
public class Picture
{
public ImageSource Img { get; set; }
public string Title { get; set; }
}