2009-09-09 12 views
10

El comportamiento de ListBox es que el primer elemento se selecciona automáticamente, ¿cómo puedo evitar eso?ListBox siempre selecciona automáticamente el primer elemento

Nota: Prefiero hacer esto con xaml puro, si tiene alguna idea de código subyacente, entonces no se moleste.

+0

creo que u significa, que cuando u Mover el enfoque al cuadro de lista, primero elemento siempre se selecciona? (resaltado ... y si presiona hacia abajo, ¿el 2do elemento se enfoca?) –

+0

1) para el que marcó mi pregunta como duplicada, usted no entendió la pregunta, yo soy el que también publicó el duplicado. 2) @Madi, cuando se muestra el cuadro de lista, su primer elemento se selecciona automáticamente, quiero desactivar esta característica. – Shimmy

+0

hmm .. puedes usar FocusManager para enfocar en un cierto elemento/elemento .. (todo en xaml) ...sin embargo, no puedo entender cómo hacer que se concentre en nada: D –

Respuesta

5

Bueno he intentado esto utilizando FocusManager.FocusedElement .. e hizo que el enfoque intial a
cuadro de lista en sí .. por lo que tiene la focus..but sin elemento se selecciona .. si u presione hacia abajo o pestaña se seleccionará ..el primero elemento del cuadro de lista ...

<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

También podemos establecer SelectedIndex a -1:

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

Nota: Quiero hacer esto con xaml pura, si tiene alguna idea de código subyacente, por favor, no se moleste.

Lamentablemente no se puede hacer todo en XAML ... por lo general puede evitar el código subyacente, pero todavía se necesita escribir convertidores, extensiones de marcado o afectos

+1

Estaba buscando una respuesta como la tuya. el único pequeño problema es que no funciona. – Shimmy

+2

no funciona :) –

+1

+1, no puede hacer todo en XAML. – user7116

1

Es SelectedIndex la propiedad que le buscando ? O tal vez que no entiendo su punto de ...

+1

entendiste mi punto, pero cuando establezco el índice seleccionado en -1 o, alternativamente, el elemento seleccionado en x: nulo, el primer elemento sigue seleccionado – Shimmy

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

No deseo que el modo de selección sea Único. – Shimmy

-1

Agregar un elemento en blanco.

1

Mismo problema aquí. ¿Alguien encontró una solución "limpia"?
El problema es el mismo aquí, provoca la ejecución de un grupo de desencadenantes.

obvio solución/fix:
1) Retire controladores de eventos SelectionChanged de XAML
2) Añadir manipuladores en el constructor después InitializeComponents ha cargado el cuadro de lista.

+0

Preguntas y comentarios relacionados con los comentarios existentes. – Shimmy

8

Trate

IsSynchronizedWithCurrentItem="False"

5

eliminar IsSynchronizedWithCurrentItem = "true" un complemento con el próximo evento SelectionChanged si es necesario. Esto resolvió mi problema

2

Esta es una técnica que uso con bastante frecuencia. Se basa en el ejemplo anterior de agregar el atributo FocusedElement a su Window o UserControl.

Mi problema es que no quiero QUE CUALQUIERA de los controles en mi ventana tengan foco. La solución para mí es crear un control ficticio que no tenga UI y asignarle foco a eso. Lo que pasa es que Control encaja a la perfección:

<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> 
Cuestiones relacionadas