मैं Win12orms ListView
के समतुल्य को View
संपत्ति View.List
पर सेट करने की कोशिश कर रहा हूं। दृश्यमान, निम्नलिखित ठीक काम करता है। मेरे Listbox
में फ़ाइल नाम ऊपर से नीचे तक जाते हैं, और फिर एक नए कॉलम पर लपेटें।ListBox + WrapPanel तीर कुंजी नेविगेशन
<ListBox Name="thelist"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True"
Orientation="Vertical" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
हालांकि, डिफ़ॉल्ट तीर कुंजी नेविगेशन लपेट नहीं करता है:
यहाँ बुनियादी XAML के साथ मैं काम कर रहा हूँ है। यदि कॉलम में अंतिम आइटम चुना जाता है, तो नीचे तीर दबाकर अगले कॉलम के पहले आइटम पर नहीं जाता है।
private void thelist_KeyDown(object sender, KeyEventArgs e) {
if (object.ReferenceEquals(sender, thelist)) {
if (e.Key == Key.Down) {
e.Handled = true;
thelist.Items.MoveCurrentToNext();
}
if (e.Key == Key.Up) {
e.Handled = true;
thelist.Items.MoveCurrentToPrevious();
}
}
}
यह पैदा करता है पिछले-इन-स्तंभ के लिए फर्स्ट-इन-अगली स्तंभ व्यवहार है कि मैं चाहता था, लेकिन यह भी कुछ अजीब बाईं में पैदा करता है और:
मैं KeyDown
घटना इस तरह से निपटने की कोशिश की दायां तीर हैंडलिंग। जब भी यह ऊपर/नीचे तीर का उपयोग करके एक कॉलम से अगले/पिछले तक लपेटता है, बाएं या दाएं तीर कुंजी का एक भी बाद का उपयोग चयन को उस आइटम के बाएं या दाएं स्थान पर ले जाता है जिसे लपेटने से ठीक पहले चुना गया था।
मान लें कि सूची "0101" के माध्यम से स्ट्रिंग "0001" से 10 स्ट्रिंग प्रति कॉलिंग के साथ भरती है। यदि मैं "0010" से "0011" पर जाने के लिए नीचे तीर कुंजी का उपयोग करता हूं, तो दाएं तीर कुंजी दबाएं, चयन "0020" के लिए "0020" पर जाएं। यदि "0011" चुना गया है और मैं चयन को "0010" में स्थानांतरित करने के लिए ऊपर तीर कुंजी का उपयोग करता हूं, तो दायां तीर कुंजियों का एक प्रेस "0021" (बाईं ओर "0011" के दाईं ओर, और बाईं ओर एक प्रेस पर जाता है "0001" के लिए तीर कुंजी चाल चयन।
किसी भी मदद के वांछित स्तंभ-चादर लेआउट को प्राप्त करने और तीर कुंजी नेविगेशन की सराहना की जाएगी।
(संपादित करता मेरे अपने जवाब में ले जाया गया है, क्योंकि यह तकनीकी तौर पर एक जवाब है।)
ग्रेट, इससे मुझे बहुत मदद मिली। ;) – Inferis