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

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

Сообщение Anonymous »

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

Каждая кошка имеет ObservableCollection признака Objects:

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();
}
< /code>

А затем я назначаю свойство источника < /code> этим признакам < /code> collection: < /p>

this.CollectionViewSource.Source = CurrentCat.Traits;


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

Проблема заключается в том, что изменения в этом базовом _traits не заставляют UI правильно обновить. Например, это: < /p>

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

, кажется, не имеет никакого эффекта немедленно < /em> в пользовательском интерфейсе, но если я сброшу свойство Source < /code> как SO: < /p>

var oldSource = this.CollectionViewSource.Source;
this.CollectionViewSource.Source = null;
this.CollectionViewSource.Source = oldSource;
< /code>

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

edit: CollectionViewSource применяется к списку в моем файле XAML:



...



Подробнее здесь: https://stackoverflow.com/questions/856 ... refreshing
Ответить

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

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

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

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

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