Question

Dans mon application je permet aux utilisateurs d'enregistrer des photos de l'appareil photo et photothèque de stockage isolé. Je puis obtenir le nom de chaque fichier et lu la photo et d'ajouter à ma liste. Une fois que la liste est construite, je lie à la liste.

Je peux obtenir environ 5 affiché sans problème. Après que je reçois, je défiler l'exception:

System.Windows.Markup.XamlParseException occurred
  Message= [Line: 0 Position: 0]
   --- Inner Exception ---
KeyNotFoundException

Ceci est mon 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>

Voici le code:

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; }
}

Très nouveau pour le développement WP7 et confus pour expliquer pourquoi mon code fonctionne partiellement.

Était-ce utile?

La solution

Je pense que vous avez fait une erreur: Name="{Binding FileName}"
Le nom doit commencer par une lettre ou le caractère underscore (_), et ne doit contenir que des lettres, des chiffres ou des underscores: regardez ici
Je pense que certains de vos noms de fichiers ne sont pas mathématiques avec ces principes
Utilisez une autre propriété comme Tag à la place.

Autres conseils

Découvrez ce message: XamlParseException FOU me conduire

La ligne de fond est que, souvent, un XmlParseException est en fait un TargetInvocationException qui peut être déterminé dans le InnerException. Cela pourrait être un point d'ancrage pour une enquête plus approfondie.

Utilisez un:

try
{
}
catch(Exception ex)
{
}

construction et définir un point d'arrêt sur les prises. inspecter la variable ex plus en détail pour voir si elle contient une InnerException qui peut vous donner plus de perspicacité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top