2010-05-04 14 views
7

यदि मेरे पास एक कॉम्बोबॉक्स है जिसमें चयन चेंज किया गया ईवेंट है, तो जब मैं नियंत्रण लोड कर रहा हूं तो यह आग लगती है।एक्सएएमएल कॉम्बोबॉक्स चयन चेंज किए गए आग ऑनलोड

तो पेज लोड पर मैंने चयनित वैल्यू और चयन चेंज इवेंट आग लगा दी जो मैं नहीं करना चाहता हूं।

इसे रोकने के लिए स्वीकृत एपोरैच क्या है? यह करने के लिए

उत्तर

12

दो स्पष्ट समाधान होगा 1) निर्माता में जैसे जो ComboBox शामिल खिड़की/पृष्ठ/UserControl के लोडेड घटना जब तक प्रतीक्षा करें और वहाँ SelectionChanged ऊपर हुक ...:

// set the inital selected index for the combo box here... 

this.Loaded += (s, args) => 
       { 
        cmbBox.SelectionChanged += 
          new SelectionChangedEventHandler(HandleChanged); 
       }; 

या 2) हैंडलर में जाँच करें कि ComboBox चयन बदल हैंडलर में लोड होने के लिए कुछ भी करने से पहले और लौटने अगर यह नहीं है ... जैसे:

if (!cmbBox.IsLoaded) 
     return; 

मैं नंबर 1 पसंद करेंगे के रूप में यह आवश्यकता नहीं है प्रत्येक बार चयन करें चेंज किए गए हैंडलर को निकाल दिया जाता है। आप एक धुरी का उपयोग कर रहे हैं, और समय से पहले ही नियंत्रण फायरिंग हैं PivotItem> 0 में, आप अभी भी समस्या है जाएगा

:

+0

महान धन्यवाद के लिए कि – griegs

+1

धन्यवाद यह बहुत उपयोगी है ... – KomalJariwala

+0

जहां मैं अपने पहले समाधान ... – SANDEEP

1

मैं किसी विशेष स्थिति का सामना करना पड़ा।

उस स्थिति में, ऐसा लगता है। लोडेड() केवल पिवोटइटम "0" को संदर्भित करता है, और यूआई में अन्य पिवोट इटैम में बदलना वैसे भी घटनाओं को आग लगा देगा।

उस मामले में, समाधान (अपने उदाहरण के साथ):

cmbBox.Loaded += (s, args) => 
      { 
       cmbBox.SelectionChanged += 
         new SelectionChangedEventHandler(HandleChanged); 
      }; 
संबंधित मुद्दे