5

मैं निम्नलिखित XAML अंश है: जब तक उपयोगकर्ता एक बटन जो तब सेट को सही पर IsPaneOpen, जो बारी में पता चलता प्रेसहो रहा से TextBlock को रोकने के लिए स्वत: ध्यान केंद्रित

 <SplitView Name="Menu" DisplayMode="CompactOverlay" OpenPaneLength="200" CompactPaneLength="0" Grid.RowSpan="2"> 
      <SplitView.Pane> 
       <StackPanel> 
        <AutoSuggestBox Margin="0,20,0,20" Width="170" PlaceholderText="Search" QueryIcon="Find"></AutoSuggestBox> 
        <ListBox> 
         <ListBoxItem Tapped="Projects_Tapped"> 
          <StackPanel Orientation="Horizontal"> 
           <SymbolIcon Symbol="Library" /> 
           <TextBlock Margin="10,0,0,0">Projects</TextBlock> 
          </StackPanel> 
         </ListBoxItem> 
         [....] 
        </ListBox> 
       </StackPanel> 
      </SplitView.Pane> 
     </SplitView> 

मूलतः, यह SPLITVIEW जमा है मेरी आवेदन मेनू

समस्या यह है कि मेनू में मेरी पहली चीज़ खोज बॉक्स है और ऐसा लगता है कि मैं क्या कर रहा हूं इससे कोई फर्क नहीं पड़ता। तथ्य यह है कि यह ध्यान केंद्रित करता है तो फोन पर टच कीबोर्ड लाता है, जो बहुत परेशान है और छोटे फोन पर अधिकांश मेनू छुपाता है।

मैंने TabIndex संपत्ति के साथ खेलने की कोशिश की या तो इसे एक बड़ी संख्या दी या यहां तक ​​कि किसी और चीज़ के लिए निचली अनुक्रमणिका भी डाली।

मैंने भी IsTabStop को झूठी करने की कोशिश की लेकिन ऐसा कुछ भी प्रतीत नहीं हुआ।

क्या बॉक्स को स्वचालित रूप से ध्यान केंद्रित करने से रोकने के लिए एक साफ तरीका है? ,

<ListBox Name="MyListBox"> 

फिर, जहां true को IsPaneOpen फोन:

दें ListBox एक नाम:

उत्तर

1

(अक्षम करने/तत्व छिपा है और फिर इसे फिर से दिखा सक्षम/इसके अलावा) आप यह कर सकते

Menu.IsPaneOpen = true; 
MyListbox.Focus(FocusState.Programmatic); 

यह ListBox elemen को फोकस बदल जाएगा: निम्नलिखित पंक्ति जोड़ टी और जब आप SplitView खोलते हैं तो कीबोर्ड को खारिज कर दें।

+0

हालांकि इस समाधान ने मेरे लिए काम किया, लेकिन मैंने एल्विस के जवाब को प्राथमिकता दी क्योंकि मुझे लगता है कि यह और अधिक साफ है। मैं सी # कोड से पूरी तरह से बचने की कोशिश कर रहा था .. –

0

यह ऑटोसॉज़बॉक्स के अंदर टेक्स्टबॉक्स है जो स्वचालित रूप से फ़ोकस पुनर्प्राप्त कर रहा है।

'पर क्लिक करें दस्तावेज़ रूपरेखा' tag-> दस्तावेज़ Tree- से AutoSuggestBox तत्व चुनें> सही क्लिक-> संपादित टेम्पलेट> संपादित एक प्रतिलिपि:

समस्या को ठीक करने के लिए, आप द्वारा AutoSuggestBox के टेम्पलेट को संपादित कर सकते हैं ।

फिर वीएस आपके पृष्ठ संसाधनों में टेम्पलेट जोड़ देगा। नीचे की तरह टेम्पलेट के अंदर पाठ बॉक्स को IsTabStop="False" जोड़ें:

<ControlTemplate TargetType="AutoSuggestBox"> 
    <Grid> 
     <VisualStateManager.VisualStateGroups> 
      ... 
     </VisualStateManager.VisualStateGroups> 
     <TextBox x:Name="TextBox" IsTabStop="False" ScrollViewer.BringIntoViewOnFocusChange="False" DesiredCandidateWindowAlignment="BottomEdge" Header="{TemplateBinding Header}" Margin="0" PlaceholderText="{TemplateBinding PlaceholderText}" Style="{TemplateBinding TextBoxStyle}" Width="{TemplateBinding Width}" Canvas.ZIndex="0"/> 
     <Popup x:Name="SuggestionsPopup"> 
      ... 
     </Popup> 
    </Grid> 
</ControlTemplate> 

फिर, यह ध्यान देने के लिए स्वचालित रूप से हो रही है बंद हो जाएगा।

+0

स्वच्छ और सरल विस्तृत स्पष्टीकरण, मुझे यह पसंद है! धन्यवाद –

+3

अब यह पूरी तरह ध्यान केंद्रित करना बंद कर दिया है ... –

-1

मैं सरल सेट tabindex 999 करने के लिए और इस मेरी समस्या हल:

<AutoSuggestBox TabIndex="999" /> 

इससे पहले कि मैं जवाब स्वीकार किए जाते हैं की कोशिश की, लेकिन यह सब पर पाठ बॉक्स का उपयोग करने के लिए पूरी तरह ध्यान केंद्रित हो रही है, यानी असंभव नहीं का कारण बनता है (ध्यान केंद्रित नहीं कर सकते हैं उस पर, कोई कीबोर्ड पॉप अप नहीं करता है, आदि)।

+0

डाउनवॉटिंग न केवल यह एक हैक है और एक फिक्स नहीं है, लेकिन यह मूल प्रश्न का भी उत्तर नहीं देता है।हां 'IsTabStop' तत्व को ध्यान केंद्रित करने से रोक देगा (यह नाम में स्पष्ट है) लेकिन आपके सुझाव के साथ आप समस्या से परहेज कर रहे हैं। अब जब मेरे पास अधिक एक्सएएमएल ज्ञान है, तो मेरा मानना ​​है कि सबसे अच्छा जवाब जस्टिन है इसलिए मैं इसे चुन रहा हूं कि अब –

+0

यह प्रश्न के साथ सटीक मिलान नहीं हो सकता है, लेकिन मैं इस पृष्ठ पर इसी समस्या के साथ मिलता हूं और उस पृष्ठ का धन्यवाद करता हूं। समाधान मिला। तो मुझे लगता है कि अन्य लोगों में भी दिलचस्पी हो सकती है। यह मेरे लिए काम करता है, और एक्सएएमएल समाधान आम तौर पर प्रोग्राम को ध्यान से पार करने और स्थानांतरित करने की कोशिश करने से अधिक विश्वसनीय है। –

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