Каковы различия между использованием ItemsSource и цикла foreach для назначения данных в ListView? - PullRequest
4 голосов
/ 11 апреля 2011

Есть ли различия между следующими фрагментами кода?Я использую VS 2010, .NET 4, WPF

Фрагмент кода 1:

  List<EPutAway> listEPutAway = new List&ltEPutAway>();
  // assign some data in listEPutAway here
  lvPutWaySearch.ItemsSource = listEPutAway;   // lvPutWaySearch is a ListView

Фрагмент кода 2:

  List<EPutAway> listEPutAway = new List<EPutAway>();
  // assign some data in listEPutAway here
  foreach (var ePutAway in listEPutAway)
                {
                    lvPutWaySearch.Items.Add(ePutAway); // lvPutWaySearch is a ListView
                }

1 Ответ

9 голосов
/ 11 апреля 2011

Существует очень большая разница .

В первом сценарии вы привязываете к listEPutAway коллекции .Это означает, что если коллекция реализует INotifyCollectionChanged, любые изменения в ней будут автоматически отражены в элементе управления, который к ней привязан.

Конечно, в этом конкретном примере List(какой именно класс?), вероятно, не реализует этот интерфейс.Обычно при привязке вы выбираете привязку к ObservableCollection<T> по этой конкретной причине.

Во втором сценарии вы предоставляете список элементов для элемента управления вручную.Данные в элементе управления полностью независимы от всего, что может происходить в вашем приложении.

Одной из главных привлекательностей WPF является именно поддержка привязки данных, поэтому «путь WPF» является первымсценарий (и объявление привязки также в XAML).

В качестве идентификатора вы должны иметь в виду, что невозможно использовать Items (ручное заполнение) и ItemsSource (привязка данных)в то же время.

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