2013-08-08 11 views
8

हमारे विंडोज स्टोर ऐप में हमारे पास एक टेक्स्टबॉक्स है, और जब एप्लिकेशन प्रारंभ होता है तो यह टेक्स्टबॉक्स हमेशा ध्यान केंद्रित करता है। डेस्कटॉप परिदृश्य में कोई समस्या नहीं है, लेकिन टैबलेट डिवाइस पर यह फोकस सीधे ऑनस्क्रीन कीबोर्ड खोल देगा जो एक परिदृश्य नहीं है जिसे हम चाहते हैं।पहले टेक्स्टबॉक्स पर ध्यान दें

हमने फ़ोकस (फोकसस्टेट) विधि के साथ किसी अन्य नियंत्रण प्रोग्रामैटिक पर फ़ोकस सेट करने का प्रयास किया, लेकिन किसी भी तरह फोकस टेक्स्टबॉक्स पर वापस सेट किया गया है। हमने दोनों ने लोडस्टेट या ऑन नविजिटेड टू विधि में फोकस सेट किया है।

केवल जब हमारे पास टाइमर होता है तो हमने दूसरे नियंत्रण में सफलतापूर्वक ध्यान केंद्रित किया है। किसी के पास विचार है कि फोकस को किसी अन्य नियंत्रण में कैसे सेट किया जाए, या अधिमानतः किसी नियंत्रण पर ध्यान केंद्रित न करें?

उत्तर

16

आम तौर पर आप TextBox.Focus() द्वारा किसी भी तत्व पर फ़ोकस सेट कर सकते हैं। हालांकि, जब आप अपना टेक्स्टबॉक्स एक स्क्रॉलव्यूयर या फ्लाईऑट के अंदर रखते हैं तो मुझे वही व्यवहार (स्टार्ट ऑन ऑटोफोकस) मिला। तो फिर तुम अभिभावक तत्व पर IsTabStop सेट करने के लिए:

<ScrollViewer IsTabStop="true"> 
    <TextBox /> 
</ScrollViewer> 
+2

यह सटीक उत्तर नहीं है क्योंकि मेरे पाठ बॉक्स एक ScrollViewer या फ़्लायआउट अंदर नहीं था। हालांकि मैंने इसे टेक्स्टबॉक्स से पहले IsTabStop = true के साथ स्क्रॉलव्यू जोड़कर तय किया है और क्षैतिज और -वर्तनीय स्क्रॉलबार दृश्यता को ध्वस्त करने के लिए सेट किया है। यह निश्चित रूप से सबसे अद्भुत समाधान नहीं है, लेकिन जब तक मुझे पता नहीं चला कि इसका क्या कारण है, यह काम करता है! धन्यवाद! – ChristiaanV

+0

IsTabStop एक नियंत्रण संपत्ति है। तो आप इसे किसी भी नियंत्रण पर सेट कर सकते हैं। शायद आप इसे वर्तमान पैरेंट तत्व (जो भी हो) पर सेट करने का प्रयास करें। –

+0

यह एक लेआउटअवेयर पेज के अंदर एक ग्रिड है। ग्रिड में IsTabStop नहीं है। लेआउटअवेयर पेज में है, लेकिन यह इसे ठीक नहीं करता है। – ChristiaanV

0

IsTabStop = "true" मेरे लिए काम नहीं किया। मेरा समाधान टेक्स्टबॉक्स पर फोकस सेट करने से पहले scrollViewer के UpdateLayout() को कॉल करना है:

scrollViewer.UpdateLayout();

टेक्स्टबॉक्स.फोकस (विंडोज़.यूआई.एक्सएमएल.फोकसस्टेट.प्रोग्रामैटिक);

0

आप ScrollViewer साथ जवाब स्वीकार किए जाते हैं पसंद नहीं है तो आप भी ऐसा कर सकते हैं फोकस दूर करने के लिए:,

_textBox.IsReadOnly = true; 
_textBox.IsReadOnly = false; 
संबंधित मुद्दे