ItemsSource привязка и не работает PropertyChanged - PullRequest
2 голосов
/ 15 февраля 2012

Я устанавливаю DataContext:

this.DataContext = new MainWindowViewModel();

И я связываю ItemsSource из TabControl, когда добавляю новый TabItem в конструктор MainWindowViewModel, он работает!Но когда я добавляю новый TabItem в событие (Клик), эффект не срабатывает.

У меня есть это свойство:

List<Item> _listOfItem;
public List<Item> ListOfItem
{
    get
    {
        return _listOfItem;

    }
    set
    {
        _listOfItem = value;
        PropertyChanged(this, new PropertyChangedEventArgs("ListOfItem"));
    }
}

Пожалуйста, помогите.

Ответы [ 4 ]

2 голосов
/ 15 февраля 2012

Вы должны использовать ObservableCollection, а не List, если вы хотите, чтобы пользовательский интерфейс был уведомлен об изменениях коллекции.

ObservableCollection<Item> _listOfItem;
public ObservableCollection<Item> ListOfItem
{
    get
    {
        return _listOfItem;
    }
    set
    {
        _listOfItem = value;
        PropertyChanged(this, new PropertyChangedEventArgs("ListOfItem"));
    }
}

Обратите внимание, что вам нужно только вызвать событие PropertyChangedдля вашего ListOfItem, если ссылка изменяется после построения типа модели вашего вида.Если это не изменится, то для ListOfItem.

будет достаточно простого свойства auto.
1 голос
/ 15 февраля 2012

Список не будет работать.

Вы должны использовать ObservableCollection для ListOfItem.

1 голос
/ 15 февраля 2012

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

1 голос
/ 15 февраля 2012

Для изменений коллекции вам нужна исходная коллекция для реализации INotifyCollectionChanged, вы можете использовать ObservableCollection<T> (который ее реализует) вместо List<T>.

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