2009-12-19 5 views
0

J'ai un ListView dans mon UserControl WPF en utilisant un ItemTemplate pour afficher les éléments. Dans le modèle est un bouton. Lorsque je sélectionne un élément, puis que je clique sur le bouton d'un autre élément, l'élément sélectionné précédemment est toujours sélectionné. Je me demande comment sélectionner automatiquement l'élément dans lequel se trouve le bouton quand on clique sur le bouton.Comment faire pour sélectionner automatiquement un WPF ListViewItem

Xaml

<UserControl.Resources> 
    <DataTemplate x:Key="ItemTemplate"> 
    <Border> 
     <Grid> 
     <!-- lots of stuff go here --> 
     <Button Click="MyButton_Click">Clickme</Button> 
     </Grid> 
    </Border> 
    </DataTemplate> 
</UserControl.Resources> 

<ListView x:Name="_listView" 
    ItemTemplate="{StaticResource ItemTemplate}"> 
</ListView> 

C# Code derrière

void MyButton_Click(object sender, RoutedEventArgs e) 
{ 
    MessageBox.Show(string.Format("clicked on {0}", 
    this._listView.SelectedItem.ToString())) ; 
} 

Répondre

0

Je le ferais en obtenant le contexte de données de l'objet expéditeur. En supposant que votre listview est une liste d'objets de type MyObject ... alors quelque chose comme ça vous permettrait de référencer l'objet sélectionné.

void MyButton_Click(object sender, RoutedEventArgs e) 
    { 
     Button b = sender as Button; 
     if (b == null) 
     { 
      return; 
     } 

     MyObject o = b.DataContext as MyObject; 
     if (o != null) 
     { 
      // Put stuff for my object here 
     }          
    } 
+0

Merci Mark. La solution que vous avez publiée est exactement ce que je cherchais. J'ai ajouté "_listView.SelectedItem = o" et tout fonctionne maintenant comme prévu. – miasbeck

+0

Génial ... super pour aider! –

0

Lorsque vous appuyez sur le bouton de votre clic/souris vers le bas est géré par le bouton et donc ne pas passer par la Contrôle ListView.

Une solution possible consiste à définir manuellement l'élément listview.SelectedItem dans l'événement de clic sur le bouton.

Questions connexes