Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Реализация INotifyCollectionChanged.

Читайте также:
  1. Возврат и реализация грузов перевозчиком
  2. Выбор и реализация решения
  3. ВЫБЫТИЕ (РЕАЛИЗАЦИЯ, ПЕРЕДАЧА, СПИСАНИЕ) ОСНОВНЫХ СРЕДСТВ
  4. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 1 страница
  5. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 2 страница
  6. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 3 страница
  7. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 4 страница

Ваш класс модели представления или модели может представлять коллекцию элементов, или может иметь одно или более свойств, возвращающих коллекцию. В другом случае вы, вероятно, будете хотеть отобразить коллекцию в ItemsControl, таком как ListBox, или в DataGrid в представлении. Эти элементы управления могут быть связанными с моделью представления, которая предоставляет коллекцию или свойство, возвращающее коллекцию через свойство ItemSource.

<DataGrid ItemsSource="{Binding Path=LineItems}" />

Чтобы должным образом поддерживать запросы уведомления об изменении, классы модели представления или модели, если его предоставляет коллекция, должны реализовать интерфейс INotifyCollectionChanged (в дополнение к интерфейсу INotifyPropertyChanged). Если класс модели представления или модели определяют свойство, которое возвращает ссылку на коллекцию, возвращаемый класс коллекции должен реализовывать интерфейс INotifyCollectionChanged.

Однако, реализация интерфейса INotifyCollectionChanged может быть сложной, потому что она должна посылать уведомления, когда элементы добавляются, удаляются, или изменяются в пределах коллекции. Вместо того, чтобы непосредственно реализовать интерфейс, часто легче использовать или наследоваться от класса коллекции, который уже реализует его. Класс ObservableCollection<T> обеспечивает реализацию этого интерфейса и обычно используется или в качестве базового класса, или в свойствах, представляющих коллекцию элементов.

Если вы должны создать коллекцию для привязки данных к представлению, и вам не нужно отслеживать выбор пользователя или поддерживать фильтрацию, сортировку, или группировку элементов в коллекции, можно просто определить свойство в своей модели представления, которое возвращает ссылку на экземпляр ObservableCollection<T>.

public class OrderViewModel: INotifyPropertyChanged
{
public OrderViewModel(IOrderService orderService)
{
this.LineItems = new ObservableCollection<OrderLineItem>(
orderService.GetLineItemList());
}

public ObservableCollection<OrderLineItem> LineItems { get; private set;}
}

Если вы получаете ссылку на класс коллекции (например, от другого компонента или службы, которая не реализует INotifyCollectionChanged), можно обернуть эту коллекцию в экземпляр ObservableCollection<T>, используя один из конструкторов, которые принимают в качестве параметра IEnumerable <T> или List<T>.


Дата добавления: 2015-08-13; просмотров: 65 | Нарушение авторских прав


Читайте в этой же книге: Слабая связь | События | Команды | Команды и привязка к данным | Добавление триггеров к данным | Добавление триггеров к элементам управления | Если мы хотим получать извещения о нажатии любой кнопки в окне, достаточно просто вызвать метод | Триггер, который позволяет применять изменения, основанные на состоянии нескольких свойств. | Шаг 2. Использование нестандартных команд. | Класс представления (View). |
<== предыдущая страница | следующая страница ==>
Класс модели представления (View Model).| Создание представления, определенного как шаблон данных.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)