2012-08-27 1 views
1

J'ai une zone de liste avec son DataContext. Lorsque je sélectionne un élément, je ne peux plus le sélectionner de nouveau. Ce n'est pas un problème quand il y a beaucoup d'objets, mais parfois, un post-service me renvoie une liste avec un seul élément, et si l'utilisateur sélectionne l'élément et qu'il veut le sélectionner à nouveau, il ne pourra pas le faire. Quelqu'un sait comment résoudre ce problèmeSélectionnez un élément deux ou plusieurs fois

Quoi qu'il en soit, merci!

Répondre

1

Comme Thierry l'a demandé, pourquoi voulez-vous que l'utilisateur sélectionne à nouveau le même article?

Si c'est juste un cas de bord où vous avez un élément qui remplit la zone de liste, alors je demande, est l'élément unique (ou le premier élément avec plusieurs retourné) sélectionné par défaut? Si c'est le cas, essayez de définir la propriété IsSynchronizedWithCurrentItem sur False dans la zone de liste. Sans voir le code, il est difficile de fournir une meilleure réponse.

Si un code est exécuté à chaque fois qu'un utilisateur sélectionne un élément, qu'il s'agisse du même, un problème de workflow peut se produire. Vous voudrez peut-être voir si vous pouvez refactoriser le code dans cette zone pour changer le flux de travail.

Si vous ne pouvez pas modifier le flux de production en sélectionnant un élément, même si c'est le même, vous devrez peut-être faire de chaque élément de la zone de liste un bouton avec le modèle de contrôle du bouton changé en Textblock. Cela vous permettra de vous lier à la propriété Command et de savoir précisément quel élément a été cliqué par l'utilisateur.

+0

dans WP7, en utilisant un ListBox comme une liste de liens de navigation est le paradigme - pas un problème de flux de travail. –

1

Si vous utilisez un ListBox pour faire quelque chose comme la navigation, il est logique que vous vouliez que l'utilisateur puisse sélectionner un élément plus d'une fois de suite. Voici comment faire:

Le « problème » est tout simplement que le ListBox vous informe des changements , et en sélectionnant le même article n'est pas un changement . Donc, l'invalider à la fin de la méthode, et vérifiez votre état invalidé au début.

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var lb = (ListBox)sender; 
    if (lb.SelectedIndex == -1) return; 

    //your selection logic here 

    lb.SelectedIndex = -1; 
} 
2

Essayez ceci, cela fonctionne pour moi .. :)

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     ListBox listBox = sender as ListBox; 

     if (listBox != null && listBox.SelectedItem != null) 
     { 
      // do work 
     } 

     listBox.SelectedIndex = -1; 
    } 
+0

Merci! ça marche aussi pour moi –

+0

Super. S'il vous plaît upvote/accepter comme réponse que vous vous sentez approprié. –

Questions connexes