XamlParseException при привязке к списку - PullRequest
5 голосов
/ 14 июня 2011

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

Я могу получить около 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 и не совсем понимаю, почему мой код частично работает.

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Я думаю, что вы допустили ошибку в: Name="{Binding FileName}"Имя должно начинаться с буквы или символа подчеркивания (_) и содержать только буквы, цифры или символы подчеркивания: смотрите здесь Я думаю, что некоторые из ваших имен файлов не соответствуют этим принципамВместо этого используйте другое свойство, например Tag.

0 голосов
/ 17 июня 2011

Прочтите этот пост: XAMLParseException приводит меня к СУМАШЕНИЮ!

Суть в том, что часто XmlParseException фактически является TargetInvocationException, который можно определить в InnerException.Это может стать якорем для дальнейшего расследования.

Используйте конструкцию:

try
{
}
catch(Exception ex)
{
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...