Une requête ListView plus élégante
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
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?