Xamlparseexception при привязке с Listbox
-
27-10-2019 - |
Вопрос
В своем приложении я позволяю пользователям сохранять фотографии от камеры и библиотеки фото в изолированное хранилище. Затем я получаю имя каждого файла, прочитал фотографию и добавляю в свой список. Как только список построен, я связываю его с списком.
Я могу получить около 5 отображения без проблем. После того, как я прокрутил, я получу исключение:
System.Windows.Markup.XamlParseException occurred
Message= [Line: 0 Position: 0]
--- Inner Exception ---
KeyNotFoundException
Это мой XAML:
<ListBox x:Name="userPhotosListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="DataTemplateStackPanel" Orientation="Horizontal">
<ContentControl Content="{Binding Image}" Width="400" />
<Image Name="{Binding FileName}" Source="/Images/appbar.delete.rest.png" Width="48" Height="48"
MouseLeftButtonUp="Image_MouseLeftButtonUp" VerticalAlignment="Center" HorizontalAlignment="Center" MaxWidth="48" MaxHeight="48" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Это код:
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
var userFiles = store.GetFileNames();
foreach (var userFile in userFiles)
{
if (userFile.Contains(PhotoInIsolatedStoragePrefix))
{
var currentBitmap = ReadBitmapImageFromIso(userFile);
var userPhotoImage = new Image { Source = currentBitmap };
var userImg = new Img(userPhotoImage, userFile);
userPhotosListBox.Items.Add(userImg);
}
}
}
public class Img
{
public Img(Image img, string fileName)
{
this.Image = img;
this.FileName = fileName;
}
public Image Image { get; set; }
public string FileName { get; set; }
}
Очень новичок в разработке WP7 и запутался в том, почему мой код частично работает.
Решение
Я думаю, вы допустили ошибку в: Name="{Binding FileName}"
Имя должно начинаться с буквы или подчеркивания символа (_) и должно содержать только буквы, цифры или подчеркивание: Смотри сюда
Я думаю, что некоторые из ваших имен файлов не являются математикой с этими принципами
Вместо этого используйте другое свойство, такое как тег.
Другие советы
Проверьте этот пост: Xamlparseexception сводит меня с ума!
Суть в том, что часто xmlparseexception на самом деле является целевым фактическим фактором, которое можно определить в Innerexception. Это может быть якорем для дальнейшего расследования.
Использовать:
try
{
}
catch(Exception ex)
{
}
Постройте и установите точку останова на уловке. Затем осмотрите бывшую переменную более подробно, чтобы увидеть, содержит ли она иннрекса, которое может дать вам больше понимания.