Domanda

Nella mia app sto permettendo agli utenti di salvare le foto dalla fotocamera e dalla libreria di foto a archiviazione isolata. Quindi ottengo il nome di ogni file e leggo la foto e aggiungo al mio elenco. Una volta creato l'elenco, lo lendo alla casella di riepilogo.

Posso ottenere circa 5 visualizzati senza problemi. Dopo aver scorretto l'eccezione:

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

Questo è il mio 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>

Questo è il codice:

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

Molto nuovo per lo sviluppo di WP7 e confuso sul perché il mio codice funziona parzialmente.

È stato utile?

Soluzione

Penso che tu abbia fatto un errore in: Name="{Binding FileName}"
Il nome deve iniziare con una lettera o il carattere di sottolineatura (_) e deve contenere solo lettere, cifre o sottolinearsi: guarda qui
Penso che alcuni dei nomi dei tuoi file non siano matematici con questi principi
Usa invece un'altra proprietà come il tag.

Altri suggerimenti

Dai un'occhiata a questo post: XamlparseException mi fa impazzire!

La linea di fondo è che spesso una XMLParseException è in realtà un TargetInvocationException che può essere determinato nella INNEREXception. Potrebbe essere un'ancora per ulteriori indagini.

Usare un:

try
{
}
catch(Exception ex)
{
}

Costruire e impostare un punto di interruzione sul pescato. Quindi ispezionare la variabile ex in modo più dettagliato per vedere se contiene una parte di InneRexception che può darti più approfondimenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top