Pregunta

En mi aplicación estoy permitiendo a los usuarios guardar fotos de la cámara y la biblioteca de fotos al almacenamiento aislado. Luego obtengo el nombre de cada archivo y leo la foto y agrego a mi lista. Una vez que se construye la lista, la encuentro al cuadro de lista.

Puedo mostrar alrededor de 5 sin ningún problema. Después de desplazar, obtengo la excepción:

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

Este es mi 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>

Este es el código:

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

Muy nuevo en el desarrollo del WP7 y confundido sobre por qué mi código funciona parcialmente.

¿Fue útil?

Solución

Creo que cometiste un error en: Name="{Binding FileName}"
El nombre debe comenzar con una letra o el carácter inferior (_), y debe contener solo letras, dígitos o subrayadores: mira aquí
Creo que algunos de sus nombres de archivo no son matemáticas con estos principios.
Use otra propiedad como etiqueta en su lugar.

Otros consejos

Mira esta publicación: XamlparseException me vuelvo loco!

La conclusión es que a menudo una XMLParseException es en realidad una TargetInvocationException que se puede determinar en la Innerexception. Eso podría ser un ancla para una mayor investigación.

Utilizar una:

try
{
}
catch(Exception ex)
{
}

Construya y establece un punto de interrupción en la captura. Luego inspeccione la variable EX con mayor detalle para ver si contiene una innerexcepción que puede darle más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top