J'ai un listview code> qui est DataNound à un
Observablecollection CODE> ...
<ListView x:Name="List1" ItemsSource="{Binding MyList}" />
3 Réponses :
Vous allez devoir attacher le gestionnaire à votre liste. Ou, utilisez un < Code> CollectionView CODE> et accroche l'événement modifié là-bas.
Dans votre codeBeHind, faites comme ceci: p>
Un observablecollection {t} expose le Reliure à un itemSource Le moteur de liaison de données gère la propogation de Changements de la source à la commande d'éléments, mais si vous devez effectuer un traitement supplémentaire, vous pouvez joindre un gestionnaire à l'événement de collectionChanged et utiliser le NotifyCollectionChangeDeventargs fournit.
En supposant que vous avez une propriété publique à votre modèle Nommé MyList: P>
public ObservableCollection<T> MyList { get { if(_viewModelMyList == null) { _viewModelMyList = new ObservableCollection<T>; _viewModelMyList.CollectionChanged += (o, e) => { // code to process change event can go here if(e.Action == NotifyCollectionChangedAction.Add) { } }; } return _viewModelMyList; } } private ObservableCollection<T> _viewModelMyList;
Cela fonctionnerait si l'affiche originale souhaite que la logique soit sur le point de vue, mais je vais deviner qu'il veut une logique supplémentaire sur la vue depuis qu'il a montré un XAML et une liaison. Je pourrais toutefois avoir tord.
Par défaut, le itemsSource code> est de type
iEnumerable code>
. Vous devez d'abord lancer à un type qui a accès au collectionChanged code>
événement, puis ajoutez un gestionnaire pour cet événement. ((INotifyCollectionChanged)List1.ItemsSource).CollectionChanged +=
new NotifyCollectionChangedEventHandler(List1CollectionChanged);
public void List1CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
{
// Your logic here
}
Cela a parfaitement fonctionné et merci pour les informations sur le casting.