Вопрос

В своем приложении я позволяю пользователям сохранять фотографии от камеры и библиотеки фото в изолированное хранилище. Затем я получаю имя каждого файла, прочитал фотографию и добавляю в свой список. Как только список построен, я связываю его с списком.

Я могу получить около 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)
{
}

Постройте и установите точку останова на уловке. Затем осмотрите бывшую переменную более подробно, чтобы увидеть, содержит ли она иннрекса, которое может дать вам больше понимания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top