2010-09-15 10 views
5

पर एप्लिकेशनबार बटनिकॉन बदलें मैं एक WP7 ऐप विकसित कर रहा हूं और एप्लिकेशन को अनुरोध की स्थिति के बाद एप्लिकेशन बार पर एक बटन के आइकन को बदलने की जरूरत है। मैं कोशिश की है:रनटाइम

if (App.Servers[index].ServerState == "Enabled") 
{ 
    DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.stop.rest.png"); 
} 

else 
{ 
    DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.transport.play.rest.png"); 
} 

यह मैं कोड में कोई त्रुटि नहीं देता है, लेकिन यह संकलन नहीं कर सकते हैं .... किसी भी संकेत यह करने के लिए सराहना की है :)

धन्यवाद

उत्तर

11

एप्लिकेशनबार एक विशेष नियंत्रण है जो अन्य सिल्वरलाइट नियंत्रणों के रूप में व्यवहार नहीं करता है (Peter Torr's post on the subject देखें)। परिणामों में से एक यह है कि एक्सएएमएल में एप बार बटन में दिए गए नाम कोड-बैक में फ़ील्ड उत्पन्न करते हैं जो हमेशा शून्य होते हैं।

मुझे लगता है कि आपके मामले में विवरण AppBar में btnStart फ़ील्ड शून्य पर सेट है, और इस प्रकार अपने IconUri प्रॉपर्टी परिणाम को NullReferenceException में फेंकने की कोशिश कर रहा है।

एप्लिकेशन बार में किसी बटन तक पहुंचने के लिए, आपको इसके बजाय बटन सूची में शून्य-आधारित इंडेक्स द्वारा संदर्भित करना होगा। उदाहरण के लिए, नीचे दिए गए कोड एप्लिकेशन बार में तीसरे बटन के लिए एक संदर्भ रिटर्न:

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2]; 
+0

हाँ मैं सिर्फ पाया बाहर :) धन्यवाद –

8

यह सोचा बाहर ...

((ApplicationBarIconButton)ApplicationBar.Buttons[2]).IconUri = new Uri("/AppBar/appbar.stop.rest.png",UriKind.Relative); 

किया चाल :)