Я работаю над настройкой 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
Реализация ListView с помощью CollectionViewSource – не обновляется? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение