Более элегантный запрос ListView - PullRequest
2 голосов
/ 10 сентября 2009

Мне нужно обновлять мой ListView каждый раз, когда запускается событие IsChanged другого элемента управления. Я гуглил, как это сделать, и увидел ссылку на переполнение стека, которая привела меня сюда

Один из ответов сработал:

listView.ItemsSource = listView.ItemsSource    

Это действительно единственный способ освежить мою ListView? Это как-то не так.

Ответы [ 2 ]

5 голосов
/ 11 сентября 2009

Просто лишить законной силы.

listView.InvalidateProperty(ListView.ItemsSourceProperty)

Это должно сделать это.

Кстати, я бы действительно посоветовал взглянуть на MVVM. Это имеет тенденцию быть намного более сильным. В этом случае для приложения MVVM я бы просто сделал это:

Xaml:

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

А вот моя ViewModel, к которой я привязан:

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

public void IsChangedHandler(...)
{
     ...
     this.OnPropertyChanged("MyItems");
}
1 голос
/ 11 сентября 2009

Что вам нужно каждый раз обновлять в списке. Это определенно замедлит работу вашего приложения.

Лучше использовать ObervableCollection в качестве ItemSource вашего списка.

Вы можете найти потокобезопасную наблюдаемую коллекцию здесь .

Также смотрите этот вопрос на форуме MSDN - ListView.ItemsSource: как обновить пользовательский интерфейс при обновлении источника?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...