2011-06-14 18 views
5

मेरे ऐप में मैं उपयोगकर्ताओं को अलग-अलग स्टोरेज में कैमरा और फोटो लाइब्रेरी से फ़ोटो सहेजने की अनुमति दे रहा हूं। फिर मुझे प्रत्येक फ़ाइल का नाम मिलता है और फोटो पढ़ता है और मेरी सूची में जोड़ता है। एक बार सूची बनने के बाद, मैं इसे सूची बॉक्स में बांधता हूं।XamlParseException जब सूचीबॉक्स में बाध्यकारी

मुझे बिना किसी समस्या के 5 प्रदर्शित हो सकते हैं। मैं स्क्रॉल बाद मैं अपवाद:

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

यह मेरी 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> 

इस कोड है:

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

बहुत WP7 के विकास के लिए नए और क्यों उलझन में मेरी कोड आंशिक रूप से काम करता है।

उत्तर

1

मैं तुम्हें में एक गलती की है लगता है: Name="{Binding FileName}"
नाम एक पत्र या अंडरस्कोर वर्ण (_) के साथ शुरू करना चाहिए, और केवल अक्षर, अंक होने चाहिए, या रेखांकित: look here
मैं अपनी फ़ाइल नामों में से कुछ लगता है इन सिद्धांतों के साथ गणित नहीं हैं
इसके बजाय टैग जैसी अन्य संपत्ति का उपयोग करें।

+0

मैं हटाए गए फ़ाइल को हटाने के लिए फ़ाइल का नाम संग्रहीत करने के लिए नाम विशेषता का उपयोग कर रहा हूं और स्रोत को प्रदर्शित करने के लिए स्रोत का उपयोग कर रहा हूं। स्रोत एक स्थिर "हटाएं" आइकन का संदर्भ है। –

+0

आप फ़ाइल नाम प्रारूप क्या हैं? –

+0

मैं उन्हें अलग भंडारण में सहेजता हूं और फिर उन्हें "userPhotoInISO-" के साथ उपसर्ग करता हूं और फिर GUID + ".jpg" उत्पन्न करता हूं। सूची बॉक्स में बाध्यकारी होने पर, मैं उन फाइलनामों को फ़िल्टर करता हूं जिनमें उपसर्ग नहीं है। इसमें __AplicationSettings फ़ाइल को शामिल नहीं किया गया है। –

0

इस पोस्ट चेक आउट: XAMLParseException driving me CRAZY!

लब्बोलुआब यह है कि अक्सर एक XmlParseException वास्तव में एक TargetInvocationException जो InnerException में निर्धारित किया जा सकता है। आगे की जांच के लिए यह एक लंगर हो सकता है।

उपयोग एक:

try 
{ 
} 
catch(Exception ex) 
{ 
} 

निर्माण और पकड़ पर एक ब्रेकपाइंट निर्धारित किया है। फिर पूर्व चर का निरीक्षण करने के लिए अधिक विस्तार से जांच करें कि इसमें एक आंतरिक अपवाद है जो आपको अधिक अंतर्दृष्टि दे सकता है।