Question

Je dois actualiser mon ListView chaque fois que l'événement IsChanged d'un autre contrôle est déclenché. J'ai cherché sur Google comment faire cela, et j'ai vu un lien stackoverflow qui m'a conduit ici

Une des réponses a fonctionné:

listView.ItemsSource = listView.ItemsSource    

Est-ce vraiment le seul moyen d'actualiser mon ListView ? On se sent un peu en dehors

Était-ce utile?

La solution

Il suffit d'invalider.

listView.InvalidateProperty(ListView.ItemsSourceProperty)

Cela devrait le faire.

En passant, je suggérerais vraiment de regarder MVVM. Cela a tendance à être beaucoup plus puissant. Dans ce cas, pour une application MVVM, je voudrais simplement faire ceci:

Xaml:

<ListView ItemsSource="{Binding MyItems}" />

Et voici mon ViewModel auquel je m'engage:

public ObservableCollection<MyItem> MyItems
{
     get; set;
}

public void IsChangedHandler(...)
{
     ...
     this.OnPropertyChanged("MyItems");
}

Autres conseils

Quel est votre besoin d'actualiser la listview à chaque fois? Cela ralentira définitivement les performances de votre application.

Il est préférable d'utiliser ObervableCollection en tant que ItemSource de votre liste.

Vous pouvez trouver une collection observable protégée par un thread ici .

Voir également cette question dans le forum MSDN - ListView.ItemsSource: comment mettre à jour l'interface utilisateur chaque fois que la source est mise à jour?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top