2009-09-09 11 views
10

लिस्टबॉक्स का व्यवहार यह है कि पहला आइटम स्वचालित रूप से चुना जाता है, मैं इससे कैसे बच सकता हूं ??लिस्टबॉक्स हमेशा ऑटो आइटम का चयन करता है

नोट: यदि आप कोई कोड-पीछे विचार रखते हैं तो मैं इसे शुद्ध xaml के साथ करना पसंद करता हूं, तो कृपया खुद को परेशान न करें।

+0

मुझे लगता है कि यू मतलब यह है कि जब यू लिस्टबॉक्स को फ़ोकस, 1 आइटम हमेशा चयन किया जाता है? (हाइलाइट किया गया..और यदि आप दबाते हैं, तो दूसरा आइटम फोकस हो जाता है?) –

+0

1) जिसने मेरा प्रश्न डुप्लिकेट के रूप में चिह्नित किया है, आपको प्रश्न समझ में नहीं आया, मैं भी डुप्लिकेट पोस्ट करने वाला हूं। 2) @ माडी, जब सूची बॉक्स प्रस्तुत किया जाता है, तो इसकी पहली वस्तु स्वचालित रूप से चुनी जाती है, मैं इस सुविधा को अक्षम करना चाहता हूं। – Shimmy

+0

हम्म .. आप फोकसमेनर का उपयोग किसी निश्चित आइटम/तत्व में केंद्रित करने के लिए कर सकते हैं .. (सभी xaml में) ...हालांकि मैं यह नहीं समझ सकता कि इसे किसी भी चीज़ पर कैसे ध्यान केंद्रित करना है: D –

उत्तर

5

खैर मैं इस FocusManager.FocusedElement उपयोग करने की कोशिश .. और
को लिस्टबॉक्स ही आरंभिक फोकस बना .. तो यह focus..but है कोई तत्व चयन किया जाता है .. यदि u नीचे या टैब लिस्टबॉक्स की ..the 1 तत्व का चयन किया जाएगा प्रेस ...

<Window 
    ...... 
    FocusManager.FocusedElement="{Binding ElementName=listbox2}"> 
    <ListBox x:Name="listbox2" HorizontalAlignment="Left" 
     VerticalAlignment="Bottom" Width="117.333" Height="116" 
     Margin="30.667,0,0,30"> 
     <ListBoxItem>Jim</ListBoxItem> 
     <ListBoxItem>Mark</ListBoxItem> 
     <ListBoxItem>Mandy</ListBoxItem> 
</ListBox> 
4

आप -1 SelectedIndex सेट कर सकते हैं:

<ListBox ItemsSource="{Binding MyData}" SelectedIndex="-1"/> 

नोट: मैं शुद्ध XAML के साथ ऐसा करना चाहते हैं, अगर आप किसी भी कोड-पीछे एक विचार यह तो अपने आप को परेशान न करें।

दुर्भाग्य से आप XAML में सब कुछ नहीं कर सकते हैं ... आप आमतौर पर बच सकते हैं कोड-पीछे, लेकिन आप अभी भी कन्वर्टर्स, मार्कअप एक्सटेंशन या संलग्न गुण

लिखने के
+1

मैं आपके जैसे उत्तर के लिए देख रहा था। एकमात्र छोटी समस्या यह काम नहीं करती है। – Shimmy

+2

यह काम नहीं करता है :) –

+1

+1, आप XAML में सबकुछ नहीं कर सकते हैं। – user7116

1

SelectedIndex संपत्ति कर रहे है की जरूरत है खोज रहे हैं? या हो सकता है मैं अपनी बात नहीं मिलता है ...

+1

आपको मेरा पॉइंट मिला, लेकिन जब मैंने चयनित इंडेक्स को -1 या वैकल्पिक रूप से चयनित आइटम को x: Null पर सेट किया, तो पहला आइटम अभी भी – Shimmy

1
<ListBox SelectioMode="Single" SelectedIndex="-1"/> 
+0

चुना गया है, मैं नहीं चाहता कि चयन मोड सिंगल हो। – Shimmy

-1

एक खाली आइटम जोड़ें।

1

वही समस्या यहां। किसी को भी "साफ" समाधान मिला?
समस्या यहां समान है, यह ट्रिगर्स को निष्पादित करने का एक गुच्छा का कारण बनती है।

स्पष्ट समाधान/ठीक:
1) XAML
2 से निकालें SelectionChanged ईवेंट हैंडलर्स) निर्माता में संचालकों जोड़े के बाद InitializeComponents लिस्टबॉक्स लोड होना।

+0

संबंधित प्रश्न और टिप्पणियां शूल्ड मौजूदा पर टिप्पणी करें। – Shimmy

5

IsSynchronizedWithCurrentItem = "सही" एक यह अगले SelectionChanged घटना के साथ जोड़ने अगर जरूरत को हटाने का प्रयास करें। इसने मेरी समस्या हल की

2

यहां एक तकनीक है जिसका मैं अक्सर उपयोग करता हूं। यह आपके Window या UserControl पर FocusedElement विशेषता जोड़ने के उपरोक्त उदाहरण पर बनाता है।

मेरा सौदा यह है कि मैं नहीं चाहता कि मेरी खिड़की पर किसी भी नियंत्रण पर ध्यान केंद्रित किया जाए। मेरे लिए समाधान एक डमी नियंत्रण बनाना है जिसमें यूआई नहीं है और उस पर ध्यान केंद्रित करें। यह सिर्फ इतना है कि Control बिल बिल्कुल फिट बैठता है:

<UserControl 
    x:Class="MyControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    FocusManager.FocusedElement="{Binding ElementName=focus_thief}" 
    mc:Ignorable="d"> 
    <Grid> 
     <!-- no renderable UI --> 
     <Control Name="focus_thief"/> 
     <!-- wants focus, but won't get it --> 
     <ListBox> 
      <ListBoxItem>First Item</ListBoxItem> 
     </ListBox> 
    </Grid> 
</UserControl> 
संबंधित मुद्दे