2009-09-09 24 views
10

ListBox Verhalten ist, dass der erste Artikel automatisch ausgewählt wird, wie kann ich das vermeiden?ListBox wählt automatisch immer den ersten Eintrag

Hinweis: Ich bevorzuge dies mit reinem XAML, wenn Sie irgendwelche Code-Behind-Ideen haben, dann bitte stören Sie sich nicht.

+0

ich denke, u bedeutet, dass, wenn u Fokus auf Listbox bewegen, wird der 1. Punkt immer ausgewählt? (hervorgehoben ... und wenn du runter drückst, bekommt der 2. Punkt den Fokus?) –

+0

1) für den, der meine Frage als Duplikat markiert hattest, hast du die Frage nicht verstanden, ich bin diejenige, die auch das Duplikat gepostet hat. 2) @Madi, Wenn die Listbox gerendert wird, wird das erste Element automatisch ausgewählt, ich möchte diese Funktion deaktivieren. – Shimmy

+0

hmm .. Sie können FocusManager verwenden, um auf ein bestimmtes Element/Element zu fokussieren .. (alles in xaml) ...aber ich kann nicht herausfinden, wie man es auf nichts konzentrieren kann: D –

Antwort

5

Nun habe ich versucht, dies mit FocusManager.FocusedElement .. und machte den intial Fokus auf
Listbox selbst .. so hat es die focus..but keine Element ausgewählt .. wenn u drücken oder Tab ..der erste Element der Listbox ausgewählt werden ...

<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

Sie könnten SelectedIndex auf -1 gesetzt:

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

Hinweis: ich dies mit reinem XAML tun möchten, wenn Sie die Code-Behind-Ideen haben, dann sollten Sie sich nicht die Mühe.

Leider kann man nicht alles in XAML tun ... können Sie in der Regel vermeiden Code-behind, aber Sie müssen noch Konverter schreiben, Markup-Erweiterungen oder angefügten Eigenschaften

+1

Ich suchte nach einer Antwort genau wie deine. das einzige kleine Problem ist, dass es nicht funktioniert. – Shimmy

+2

es funktioniert nicht :) –

+1

+1, Sie können nicht alles in XAML tun. – user7116

1

Ist SelectedIndex die Sie gesucht haben, Auf der Suche nach ? Oder vielleicht kann ich nicht Ihre Nummer ...

+1

Sie haben meinen Punkt, aber wenn ich selectedindex auf -1 oder alternativ ausgewählten Artikel zu x: Null, der erste Artikel ist immer noch ausgewählt – Shimmy

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

Ich möchte nicht den Auswahlmodus Single sein. – Shimmy

-1

hinzufügen leeres Element.

1

Gleiches Problem hier. Hat jemand eine "saubere" Lösung gefunden?
Das Problem ist das gleiche hier, es verursacht eine Reihe von Triggern ausgeführt werden.

Offensichtliche Lösung/fix:
1) Entfernen Sie Selection Event-Handler von XAML
2) Fügen Sie Handler in Konstruktor nach InitializeComponents das Listenfeld geladen ist. Versuchen

+0

Verwandte Fragen und Kommentare shuold Kommentare zum bestehenden sein. – Shimmy

8

IsSynchronizedWithCurrentItem="False"

5

entfernen IsSynchronizedWithCurrentItem = "True" ein fügen Sie es mit dem nächsten Ereignis Selection, wenn nötig. Das löste mein Problem

2

Hier ist eine Technik, die ich oft verwende. Es baut auf dem obigen Beispiel des Hinzufügens des FocusedElement Attributs zu Ihrem Window oder UserControl auf.

Mein Deal ist, dass ich nicht wollen, dass IRGENDEIN der Kontrollen auf meinem Fenster Fokus haben. Die Lösung für mich besteht darin, ein Dummy-Steuerelement zu erstellen, das keine Benutzeroberfläche hat und diesem den Fokus zuweist. Es passiert einfach so, dass Control die Rechnung passt perfekt:

<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> 
Verwandte Themen