2011-06-14 7 views
5

En mi aplicación, estoy permitiendo que los usuarios guarden fotos de la cámara y la biblioteca de fotos en un almacenamiento aislado. Luego obtengo el nombre de cada archivo y leo la foto y la agrego a mi lista. Una vez que la lista está construida, la enlace al cuadro de lista.XamlParseException cuando se vincula al listbox

Me pueden mostrar 5 sin problemas. Después me desplazo consigo la excepción:

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

Esta 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 de WP7 y confundido en cuanto a por qué mi el código funciona parcialmente

Respuesta

1

creo que cometió un error en: Name="{Binding FileName}"
nombre debe comenzar con una letra o el carácter de subrayado (_), y debe contener sólo letras, dígitos o caracteres de subrayado: look here
Creo que algunos de los nombres de archivo no son matemáticas con estos principios
Use otra propiedad como Tag en su lugar.

+0

Estoy usando el atributo de nombre para almacenar el nombre del archivo para eliminar y el Origen para mostrar el ícono de eliminar. La fuente es una referencia a un icono estático de "eliminar". –

+0

¿Cuál es su formato de nombre de archivo? –

+0

Los guardo en un almacenamiento aislado y luego los prefijo con "userPhotoInISO-" y luego genero un GUID + ".jpg". Al vincular a listbox, filtrar los nombres de archivo que no tienen el prefijo. Esto excluye el archivo __ApplicationSettings. –

0

Control hacia fuera este mensaje: XAMLParseException driving me CRAZY!

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

Utilice un:

try 
{ 
} 
catch(Exception ex) 
{ 
} 

construcción y establecer un punto de interrupción en la captura. Luego, inspeccione la variable ex con mayor detalle para ver si contiene una InnerException que puede brindarle más información.

Cuestiones relacionadas