ฉันจะตั้งค่าลำดับแท็บใน WPF ได้อย่างไร ฉันมี ItemsControl ที่มีบางรายการขยายและบางรายการยุบและต้องการข้ามรายการที่ยุบเมื่อฉันกำลังแท็บ
ความคิดใด ๆ ?
ฉันจะตั้งค่าลำดับแท็บใน WPF ได้อย่างไร ฉันมี ItemsControl ที่มีบางรายการขยายและบางรายการยุบและต้องการข้ามรายการที่ยุบเมื่อฉันกำลังแท็บ
ความคิดใด ๆ ?
คำตอบ:
คุณสามารถข้ามองค์ประกอบในลำดับแท็บได้โดยตั้งค่าKeyboardNavigation.IsTabStopบนองค์ประกอบใน XAML
KeyboardNavigation.IsTabStop="False"
คุณสามารถตั้งค่าทริกเกอร์ที่จะสลับคุณสมบัตินี้ตามสถานะที่ขยายได้
หากคุณต้องการตั้งค่าการจัดลำดับแท็บอย่างชัดเจนสำหรับองค์ประกอบในรูปแบบของคุณคุณสมบัติที่แนบต่อไปนี้ควรจะช่วยได้:
<Control KeyboardNavigation.TabIndex="0" ... />
ฉันบอกว่า "ควรจะช่วย" เนื่องจากยังไม่พบว่ามีความน่าเชื่อถือมากนักแม้ว่าฉันจะต้องอ่านเพิ่มเติมเกี่ยวกับวิธีการใช้งาน ฉันโพสต์คำตอบนี้เพียงครึ่งเดียวเพราะไม่มีใครพูดถึงคุณสมบัตินี้
โปรดสังเกตว่าใน Win RT TabIndex="0"
คุณสมบัติเป็นเพียง
<DockPanel Panel.ZIndex="2">
ช่วยสั่งจุดเข้าของแผงระดับบนสุด
<Control KeyboardNavigation.TabIndex="0" ... />
ทำงานได้ดีอย่างสมบูรณ์ ... ตัวอย่างเช่น -
<ComboBox Height="23"
Margin="148,24,78,0"
Name="comboBoxDataSet"
VerticalAlignment="Top"
SelectionChanged="comboBoxDestMarketDataSet_SelectionChanged"
DropDownOpened="comboBoxDestMarketDataSet_DropDownOpened"
KeyboardNavigation.TabIndex="0" />
<ComboBox Height="23"
Margin="148,56,78,0"
Name="comboBoxCategory"
VerticalAlignment="Top"
SelectionChanged="comboBoxDestCategory_SelectionChanged"
DropDownOpened="comboBoxDestCategory_DropDownOpened"
KeyboardNavigation.TabIndex="1" />
จะช่วยให้คุณสามารถนำทางผ่านกล่องคำสั่งผสมทั้งสองนี้โดยใช้ปุ่ม TAB
ฉันคิดว่ามีวิธีแก้ปัญหาที่ง่ายกว่ามากที่ด้านบนภายในการควบคุมหรือหน้าต่างหรืออะไรก็ได้คุณสามารถเพิ่ม:
KeyboardNavigation.TabNavigation="Cycle"
นอกจากนี้ยังเป็นการอัตโนมัติโดยไม่สนใจแท็บที่ยุบ
อีกทางเลือกหนึ่งที่ได้ผลสำหรับฉันในอดีตคือการลบเนื้อหาที่ชัดเจนทั้งหมดออก TabIndex
และปล่อยให้การควบคุมใช้คำสั่งที่ประกาศไว้ใน XAML เพื่อใช้เวทมนตร์
แน่นอนว่าอาจทำให้คุณต้องจัดลำดับการควบคุมของคุณใหม่ แต่นี่เป็นการดำเนินการคัดลอกวางอย่างง่าย
คุณสามารถใช้ KeyboardNavigation.TabNavigation = "None" เพื่อข้าม Tabbing สำหรับการควบคุมเฉพาะ