Frage

In meiner App erlaube ich Benutzern, Fotos vor der Kamera- und Fotobibliothek in isoliertem Speicher zu speichern. Ich bekomme dann den Namen jeder Datei und lese das Foto und füge meiner Liste hinzu. Sobald die Liste erstellt wurde, bin ich an das Listenfeld.

Ich kann ungefähr 5 ohne Probleme angezeigt werden. Nachdem ich Scrollen habe, bekomme ich die Ausnahme:

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

Das ist mein 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>

Dies ist der 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; }
}

Sehr neu in der WP7 -Entwicklung und verwirrt darüber, warum mein Code teilweise funktioniert.

War es hilfreich?

Lösung

Ich denke, Sie haben einen Fehler gemacht in: Name="{Binding FileName}"
Der Name muss mit einem Buchstaben oder dem Unterstrich (_) beginnen und nur Buchstaben, Ziffern oder Unterstriche enthalten: Schau hier
Ich denke
Verwenden Sie stattdessen eine andere Eigenschaft wie Tag.

Andere Tipps

Schauen Sie sich diesen Beitrag an: XamlparseException macht mich verrückt!

Das Fazit ist, dass häufig eine XMLParseException tatsächlich eine TargetInvocationException ist, die in der Innerexception bestimmt werden kann. Das könnte ein Anker für weitere Untersuchungen sein.

Verwenden ein:

try
{
}
catch(Exception ex)
{
}

Konstruieren und setzen Sie einen Haltepunkt auf den Fang. Überprüfen Sie dann die Ex -Variable ausführlicher, um festzustellen, ob sie eine Innerexception enthält, die Ihnen möglicherweise mehr Einblicke gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top