Как сделать привязку TwoWay к свойствам ObservableCollection пользовательского класса, используя шаблон mvvm? - PullRequest
0 голосов
/ 05 января 2011

У меня есть следующий класс:

public class UserGroup
{
   public string GroupName { get; set; }
   public bool IsIntheGroup{ get; set; }
}

Я хочу связать ObservableCollection элементов UserGroup со списком, содержащим флажки для каждого элемента в коллекции, и флажок проверяется на основе свойства IsIntheGroup группы UserGroup.,В моей ViewModel я сделал ObservableCollection класса UserGroup:

public ObservableCollection<UserGroup> Groups { get; set; }

и загрузил его содержимое (экземпляры UserGroup) из моей модели базы данных

Я использовал следующий код в своем представлении:

<ListBox ItemsSource="{Binding Groups, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}">
   <ListBox.ItemTemplate>
      <DataTemplate>
         <StackPanel Orientation="Horizontal">
            <CheckBox IsChecked="{Binding IsIntheGroup, Mode=TwoWay}"/>
            <TextBlock Text="{Binding GroupName}" />
         </StackPanel>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Проблема в том, что я не уведомляюсь, когда пользователь устанавливает / снимает флажок в списке, поэтому моя двусторонняя привязка не удалась…

Как выполнить двустороннюю привязку в такойдело?

1 Ответ

0 голосов
/ 05 января 2011

Ваш класс UserGroup должен реализовывать INotifyPropertyChanged, и каждое свойство этого класса должно вызывать событие PropertyChanged в своих установщиках.ObservableCollection будет уведомлять пользовательский интерфейс только о добавлениях удалений из коллекции, а не об изменениях свойств каждого отдельного экземпляра в коллекции.

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