2011-11-22 18 views
5

प्रकाशित करने के बाद काम नहीं करते हैं मेरे पास एक साधारण एप्लिकेशन है। जब आप एक बटन पर क्लिक करते हैं, तो तस्बार आइकन बदल जाता है। जब मैं विजुअल स्टूडियो से इस ऐप को चलाता हूं, तो सबकुछ ठीक काम करता है, लेकिन जब मैं डब्ल्यूपीएफ ऐप प्रकाशित करता हूं, तो टास्कबार आइकन काम नहीं करता है (कोई नहीं है)।आइकन

बिल्ड एक्शन "एम्बेडेड संसाधन/कॉपी हमेशा" पर सेट है, मैंने "संसाधन" का भी परीक्षण किया है लेकिन यह काम नहीं करता है।

var iconUri = new Uri("pack://application:,,,/images/internet_connection.ico", UriKind.RelativeOrAbsolute); 
     this.Icon = BitmapFrame.Create(iconUri); 

फ्रेम परिवर्तन के ऊपरी बाएं कोने में आइकन, लेकिन टास्कबार में एक नहीं करता है।

क्या कोई मेरी मदद कर सकता है?

@Edit,

मैं इसे @ पावेल की टिप्पणी के लिए धन्यवाद काम करने के लिए मिला है। लेकिन अब एक समस्या बनी हुई है:

जब मैं दृश्य स्टूडियो में इसे चलाने के लिए, और मैं यह कर:

var iconUri = UriHelper.GetUri(this.GetType(), "images/local_network.ico"); 
     this.Icon = BitmapFrame.Create(iconUri); 

चिह्न बदल जाता है। लेकिन प्रकाशित संस्करण के साथ, यह बदल नहीं है।

@@ संपादित करें,

ठीक है तो यह मेरे कोड है जब मैं एक बटन दबाएँ:

var iconUri = UriHelper.GetUri(this.GetType(), "images/internet_connection.ico"); 
     this.Icon = BitmapFrame.Create(iconUri); 
     mNotifyIcon = new NotifyIcon 
     { 
      BalloonTipText = "The app has been minimised. Click the tray icon to show.", 
      BalloonTipTitle = "The App", 
      Text = "The App", 
      Icon = BitmapFrame.Create(iconUri) 
     }; 

     BitmapImage image = new BitmapImage(); 
     image.BeginInit(); 
     image.UriSource = UriHelper.GetUri(this.GetType(), "images/internet_connection.png"); 
     image.EndInit(); 
     TaskbarItemInfo = new System.Windows.Shell.TaskbarItemInfo() { Overlay = image }; 

क्या यह क्या करता है: जब वी.एस. से चल: टास्कबार परिवर्तन में आइकन, ओवरले काम करता है, एप्लिकेशन के शीर्ष कोने में आइकन बदलता है।

exe ​​चलाने के बाद: टास्कबार में आइकन बदलता नहीं है, ओवरले काम करता है, एप्लिकेशन के शीर्ष कोने में आइकन बदलता है।

क्या कोई इसे समझा सकता है? 'संसाधन' में निर्माण कार्रवाई सेट और एक सहायक का उपयोग करने के

+0

का उपयोग मैं ने वही समस्या एक बार याद है, लेकिन विवरण याद नहीं कर सकते हैं। यह पैक के साथ कुछ करना था जो बिन फ़ोल्डर में नहीं है, या पैक के अंदर एक बिन फ़ोल्डर में संसाधन नहीं है। हालांकि, माफ करना अभी भी इसे देखने के लिए समय नहीं है। – shawty

उत्तर

2

मैं इस लाइन आप के लिए काम करता है (यदि आप भूल गए हैं ...; घटक/....) लगता है:

var iconUri = new Uri("pack://application:,,,/YourProjectName;component/images/internet_connection.ico", UriKind.RelativeOrAbsolute); 

आइकन के लिए

Build Action = Resource 
Copy to OutputDirectory = Do not copy 
+0

यह चलाने पर दृश्य स्टूडियो में भी एक त्रुटि देता है। इससे पहले, यह दृश्य स्टूडियो में काम किया। – Nealv

+0

त्रुटि संदेश क्या है? इस लाइन को चलाकर – punker76

+0

: iconUri = new Uri ("पैक: // एप्लिकेशन: ,,,/स्विचलाईव; घटक/छवियों/local_network.ico", उरीकिंड। रिलेवेटिव); मुझे मिलता है: 'कंटेनर का आमंत्रण' स्विचलाईव। मेनविंडो 'जो निर्दिष्ट बाध्यकारी बाधाओं से मेल खाता है, अपवाद फेंक दिया।' रेखा संख्या '3' और रेखा स्थिति '9'। – Nealv

2

प्रयास करें:

public static class UriHelper 
{ 
    /// <summary> 
    /// Gets absulute URI for provided relative path 
    /// </summary> 
    /// <param name="baseType">Base type for ussage as URI root</param> 
    /// <param name="relativePath">Relative path</param> 
    /// <returns>Absolute Uri</returns> 
    public static Uri GetUri(Type baseType, string relativePath) 
    { 
     Assembly oAssembly = Assembly.GetAssembly(baseType); 
     AssemblyName oName = oAssembly.GetName(); 
     return new Uri( 
       String.Format(
        "pack://application:,,,/{0};v{1};component/{2}", 
        oName.Name, 
        oName.Version.ToString(), 
        relativePath), 
       UriKind.Absolute); 
    } 
} 
+0

बेसटाइप चर क्या है? – Nealv

+0

@Nealv baseType असेंबली में कोई भी प्रकार है जिस पर संसाधन संलग्न है। –

+0

ठीक है, यह काम आपको पहले से धन्यवाद देता है, लेकिन मुझे कोई अन्य समस्या नहीं है। क्या आप कृपया मेरे प्रश्न पर संपादन की जांच कर सकते हैं। – Nealv

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