Реализация ListView с помощью CollectionViewSource – не обновляется?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Реализация ListView с помощью CollectionViewSource – не обновляется?

Сообщение Anonymous »

Я работаю над настройкой ListView, свойство Source которого имеет значение ivar моего класса Cat.

Каждый Cat имеет ObservableCollection объектов Trait:

private ObservableCollection _traits = new ObservableCollection();

public ObservableCollection Traits
{
get
{
return _traits;
}
}

public void AddTrait(Trait t)
{
_traits.Add(t);
// Is this redundant? Is one better than the other?
this.OnPropertyChanged("_traits");
this.OnPropertyChanged("Traits");
}

public IEnumerator GetEnumerator()
{
return _traits.GetEnumerator();
}


А затем я назначаю свойство Source этой коллекции Traits:

this.CollectionViewSource.Source = CurrentCat.Traits;


Это работает правильно, и объекты Trait правильно отображаются в моем ListView.

Проблема заключается в том, что изменения в этой базовой коллекции _traits не приводят к правильному обновлению пользовательского интерфейса. Например, это:

void AddTraitButton_Click(object sender, RoutedEventArgs e)
{
if (this.CurrentCat != null)
{
this.CurrentCat.AddTrait(new Trait());
}
}


Похоже, что это не оказывает никакого эффекта немедленно в пользовательском интерфейсе, но если я сбросю свойство Source следующим образом:< /p>

var oldSource = this.CollectionViewSource.Source;
this.CollectionViewSource.Source = null;
this.CollectionViewSource.Source = oldSource;


Тогда ListView обновится правильно. Но я уверен, что мне чего-то не хватает, поскольку я бы хотел, чтобы пользовательский интерфейс обновлялся при добавлении/удалении элемента.

Изменить: CollectionViewSource применяется к ListView в моем файле XAML:



...



Подробнее здесь: https://stackoverflow.com/questions/856 ... refreshing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»