2012-08-05 8 views
7

मेरे पास मेरे आवेदन की सामग्री के रूप में एक .png फ़ाइल है। जब मैं इसेमेरे मेट्रो स्टाइल ऐप के साथ पैक की गई छवि स्रोत फ़ाइलों का संदर्भ कैसे लें?

<ImageBrush x:Key="BtnBackImageBrush" ImageSource="/Assets/Images/back.png" /> 

सब कुछ ठीक है जैसे xaml में बांधता हूं।

मैंने this article पढ़ा और जब मैं इस .png प्रोग्रामेटिक रूप से पहुंच प्राप्त करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है।

कोड मैं का उपयोग करें:

Uri baseUri = new Uri("ms:appx"); 
Image img = new Image(); 
img.Source = new BitmapImage(new Uri(baseUri, "/Assets/Images/back.png")); 
img.ImageFailed += (sender, args) => new MessageDialog("Error").ShowAsync(); 

और मेरे सवाल के संदर्भ के लिए कैसे छवि स्रोत फ़ाइलें है कि मेरे मेट्रो शैली अनुप्रयोग के साथ पैक कर रहे हैं क्या है?

सलाह के लिए धन्यवाद।

अद्यतन: मुझे जवाब मिला! हमें इसे मैन्युअल रूप से सेट करने के बजाय मूल फ्रेमवर्क एलिमेंट का उपयोग करके बेसयूरी सेट करने की आवश्यकता है। उदाहरण के लिए:

// Usage 
myImage.Source = ImageFromRelativePath(this, "relative_path_to_file_make_sure_build_set_to_content"); 

public static BitmapImage ImageFromRelativePath(FrameworkElement parent, string path) 
{ 
    var uri = new Uri(parent.BaseUri, path); 
    BitmapImage result = new BitmapImage(); 
    result.UriSource = uri; 
    return result; 
} 

इस article के लिए धन्यवाद।

उत्तर

6

हाँ आप सही हैं, यह आपके प्रश्न का उत्तर है।

img.Source = ImageFromRelativePath(this, "Assets/Images/back.png"); 

public static BitmapImage ImageFromRelativePath(FrameworkElement parent, string path) 
{ 
    var uri = new Uri(parent.BaseUri, path); 
    BitmapImage bmp = new BitmapImage(); 
    bmp.UriSource = uri; 
    return bmp; 
} 
9

नई उरी ("एमएस: appx");

मुझे लगता है कि यह मूल समस्या का स्रोत है। appx

बुरा यूआरआई: ms:appx://Assets/Images/back.png
अच्छा यूआरआई: योजना एमएस-appx नहीं एमएस है ms-appx://Assets/Images/back.png

लेकिन FrameworkElement का उपयोग कर एक बुरा विचार है, अगर तुम सच में अपनी मूल की तरह गुंजाइश कुछ करने के लिए कोशिश कर रहे हैं नहीं है - यहां तक ​​कि यदि दोनों काम करते हैं, तो उत्तरार्द्ध शायद आपके इरादे के पाठक के लिए स्पष्ट हो सकता है (मान लीजिए कि यह आपका इरादा है)।

+0

एमएस-एपएक्स होना चाहिए: /// नोट 3 / – ickydime

संबंधित मुद्दे