मेरे पास विंडोज फोन 7 के साथ खेलने के लिए एक बहुत ही सरल परीक्षण ऐप है। मैंने मानक यूआई टेम्पलेट में सिर्फ एक TextBoxऔर एक जोड़ा है TextBlock। केवल कस्टम कोड निम्नलिखित है:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
private int counter = 0;
private void TextBoxChanged(object sender, TextChangedEventArgs e)
{
textBlock1.Text += "Text changed " + (counter++) + "\r\n";
}
}
TextBox.TextChangedघटना अप करने के लिए वायर्ड है TextBoxChangedXAML में:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
हालाँकि, हर बार जब मैं एमुलेटर (ऑन-स्क्रीन कीबोर्ड या फिजिकल वन) में रनिंग करता हूं, तो बाद वाले को सक्षम करने के लिए पॉज़ दबाया जाता है। यह दो बार काउंटर को बढ़ाता है, जिसमें दो लाइनें प्रदर्शित होती हैं TextBlock। मैंने जो कुछ भी आजमाया है, उससे पता चलता है कि घटना वास्तव में दो बार फायरिंग है, और मुझे पता नहीं क्यों। मैंने सत्यापित किया है कि यह केवल एक बार सब्सक्राइब किया जा रहा है - अगर मैं MainPageकंस्ट्रक्टर में अनसब्सक्राइब करता हूं , तो टेक्स्ट में बदलाव होने पर (टेक्स्ट ब्लॉक में) कुछ भी नहीं होता है।
मैंने एक नियमित सिल्वरलाइट ऐप में बराबर कोड की कोशिश की है, और यह वहां नहीं हुआ। मेरे पास इस समय इसे पुन: पेश करने के लिए एक भौतिक फोन नहीं है। मुझे विंडोज फोन 7 में इस समस्या का कोई रिकॉर्ड नहीं मिला है।
क्या कोई समझा सकता है कि मैं क्या गलत कर रहा हूं, या मुझे इसे बग के रूप में रिपोर्ट करना चाहिए?
संपादित करें: यह दो पाठ नियंत्रण होने की संभावना को कम करने के लिए, मैंने TextBlockपूरी तरह से हटाने की कोशिश की है , और केवल वृद्धि के लिए TextBoxChanged विधि को बदलना counter। मैं फिर एमुलेटर में चला गया, 10 अक्षर टाइप किए और फिरcounter++; लाइन पर एक ब्रेकपॉइंट लगाया (बस किसी भी संभावना से छुटकारा पाने के लिए कि डिबगर में टूटने से समस्या पैदा हो रही है) - और यह counter20 के रूप में दिखाता है ।
संपादित करें: मैंने अब विंडोज फोन 7 फोरम में पूछा है ... हम देखेंगे कि क्या होता है।
textBox1.Textदबाता हूं और टेक्स्टब्लॉक 1 के हिस्से के रूप में प्रदर्शित करता हूं, तो यह दोनों लाइनों में "एच" दिखाएगा।
TextChangedEventArgsवास्तव में बहुत कुछ उपलब्ध नहीं है - बस OriginalSource, जो हमेशा शून्य है।