मैं कोड में कैसे एक कंटेनर, या केंद्रित बच्चे के तार्किक फोकस को परिभाषित कर सकता हूं, बिना कीबोर्ड फोकस दे रहा है?कुंजीपटल फोकस दिए बिना तार्किक फोकस कैसे सेट करें?
मैं सिर्फ यह नियंत्रित करना चाहता हूं कि कौन सा बच्चा फोकस प्राप्त करेगा जब नियंत्रण टैब कुंजी के माध्यम से फोकस करेगा या उस कंटेनर के हिस्से पर क्लिक करेगा जो बच्चे को मारता नहीं है, लेकिन इसे वास्तविक (यदि चोरी) वास्तविक फोकस नहीं देता है पहले से ही यह नहीं है।
और मैं यह भी चाहता हूं कि एक कीबोर्ड जेस्चर के माध्यम से एक विशिष्ट बच्चे का चयन करना या माउस के साथ उस पर क्लिक करना अभी भी संभव है।
मैं कीबोर्ड फोकस और लॉजिकल फोकस के बीच डब्ल्यूपीएफ में अंतर को समझता हूं, और तथ्य यह है कि एक तत्व के लिए, कीबोर्ड फोकस होने का तात्कालिक ध्यान भी है, लेकिन तार्किक फोकस होने से यह संकेत नहीं मिलता है कि तत्व में कीबोर्ड फोकस है।
मैं संलग्न संपत्ति को भी समझता हूं FocusManager.FocusedElement परिभाषित करता है कि इस तत्व को परिभाषित करने वाले तत्व पर शुरू होने वाले दृश्य पेड़ में कौन सा तत्व तार्किक फोकस है।
मैंने महसूस किया है कि इस संपत्ति नहीं किया जाता है केवल जब FocusManager.IsFocusScope सच करने के लिए, लेकिन यह भी GroupBox ऐसे के रूप में कंटेनरों के लिए निर्धारित है।
मैं कई प्रयास, खोजों के टन और WPF फोकस विषय पर पढ़ने कर दिया है, लेकिन कोई सफलता अब तक के साथ, मुझे समझ नहीं आता कि मैं क्या याद कर रहा हूँ:
FocusManager.SetFocusedElement
भी कीबोर्ड देते हैं, और यह मैं अस्थायी रूप से बस से पहले बहुत पहले समय के गलत पर मेरे बच्चे तत्व की संपत्ति फ़ोकस करने योग्य बदलाव होने पर कोई भी बच्चा से पहले ध्यान दिया था कि यह केवल काम करता है, नहीं, बल्कि बाद एक बच्चे पर GotKeyboardFocus और PreviewGotKeyboardFocus ध्यान केंद्रित एक उदाहरण मैं क्या हासिल करने की कोशिश कर रहा हूँ वर्णन करने के लिए: मैं radiobuttons का एक सरल समूह है, और मैं कोड जो विकल्प में गतिशील रूप से नियंत्रित करने के लिए ध्यान केंद्रित हो जाएगा जब उपयोगकर्ता "टैब" फोकस करने के लिए स्थानांतरित करने के लिए करना चाहते हैं यह ग्रुपबॉक्स (आमतौर पर वह विकल्प जिसमें isChecked=true
है)।
<GroupBox Header="Options" Name="myGroupBox"
KeyboardNavigation.TabNavigation="Once"
KeyboardNavigation. DirectionalNavigation="Cycle" >
<StackPanel>
<RadioButton GroupName="g1" Name="opt1" Content="Option _1"/>
<RadioButton GroupName="g1" Name="opt2" Content="Option _2"/>
<RadioButton GroupName="g1" Name="opt3" Content="Option _3"/>
</StackPanel>
</GroupBox>
एक अंतिम टिप्पणी, मुझे पता है कि पर शैलियों और टेम्पलेट्स के माध्यम से एक ListBox का उपयोग कर के विकल्प की एक गतिशील सूची लागू करने के लिए, डेटा संदर्भ की एक संपत्ति के लिए सूची का SelectedItem बंधन, और उसके बाद ListBoxItem बाँध के लिए आइटम टेम्पलेट में RadioButton की संपत्ति IsChecked IsSelcted अपनी मूल ListBoxItem की संपत्ति है, और यह काम करता है, लेकिन मेरी विशेष मामले के लिए, मैं टी की जरूरत है o मेरे रेडियोबूटन को सीधे मेरे डेटा संदर्भ के गुणों से बंधे रखें, मैं उन्हें एक ही समय में सूची की चयनित चयन संपत्ति से नहीं जोड़ सकता।
FocusManager.IsFocusScope = GroupBox –
के लिए सत्य सेट करने का प्रयास करें, महान प्रश्न, मैं अपने आप को इस उत्तर की खोज कर रहा हूं ... – Doug