2010-07-16 5 views

Répondre

1

Si vous avez une référence à la ListView, vous pouvez utiliser la propriété SelectedItem. Vous pouvez également lier SelectedItem à une propriété de votre ViewModel, puis lire la valeur à partir de là. Enfin, vous pouvez définir IsSynchronizedWithCurrentItem True sur votre ListView et puis utilisez:

CollectionViewSource.GetDefaultView(sourceList).CurrentItem 

où SourceList est le ItemsSource de ListView.

1

Vous pouvez ajouter un gestionnaire d'événement à votre ListViewItems en ajoutant le code XAML suivant à votre <Window.Resources>:

<Style TargetType="ListViewItem"> 
     <EventSetter Event="MouseDoubleClick" Handler="MyEventHandler" /> 
</Style> 

Ensuite, vous devez ajouter un gestionnaire d'événements dans votre code:

private void MyEventHandler(object sender, MouseButtonEventArgs e) 
    { 
     ListViewItem MyListViewItem = (ListViewItem)sender; 
     MyClass MyObject = (MyClass)Item.Content; 

     e.Handled = true; 
    } 

Dans cet exemple , MyObject contient l'objet lié à ListViewItem sur lequel vous avez cliqué. Par exemple, dans un de mes projets, j'ai un ListView qui est lié à un ObservableCollection<SongData>. Je puis utiliser le code suivant:

private void MyEventHandler(object sender, MouseButtonEventArgs e) 
    { 
     ListViewItem Item = (ListViewItem)sender; 
     SongData Song = (SongData)Item.Content; 

     // Example 
     MessageBox.Show(Song.Title + " by " + Song.Artist); 

     e.Handled = true; 
    } 

Je ne sais pas si cela vous arrive plus loin, mais il devrait fonctionner correctement. Oh, et en passant, vous pouvez également attacher un eventhandler à la ListView utiliser la propriété SelectedItem, mais pour moi cela a entraîné quelques problèmes, par exemple, si vous cliquez sur un en-tête de colonne ou un espace vide alors qu'un élément est sélectionné, il déclenche également le gestionnaire d'événement. Par conséquent, je préfère utiliser ma première approche proposée.

+0

homme u mérite un vote en Cela me aider: MyEventHandler private void (object sender, MouseButtonEventArgs e) { ListViewItem article = (ListViewItem) expéditeur; SongData Song = (SongData) Item.Content; // Exemple MessageBox.Show (Song.Title + "by" + Song.Artist); e.Handled = true; } –

+0

En fait, je suis un développeur Java/Android ayant de vastes connaissances en Java/Android, mais travaillant sur le projet de soeur qui doit être en .net donc je travaillais sur l'application basée wpf xaml et je suis nouveau à C# wpf .. cela m'aide vraiment –

Questions connexes