У меня есть ObservableCollection и ICollectionView, использующий OC в качестве источника:
private ObservableCollection<Comment> _Comments = new ObservableCollection<Comment>();
/// <summary>
/// Comments on the account
/// </summary>
[BsonElement("comments")]
public ObservableCollection<Comment> Comments
{
get
{
return _Comments;
}
set
{
_Comments = value;
OnPropertyChanged("Comments");
OnPropertyChanged("CommentsSorted");
}
}
private ICollectionView _CommentsSorted;
/// <summary>
/// Sorted list (reverse order) of the comments
/// </summary>
[BsonIgnore]
public ICollectionView CommentsSorted
{
get
{
return _CommentsSorted;
}
set
{
_CommentsSorted = value;
OnPropertyChanged("CommentsSorted");
}
}
У меня есть команда, которая запускается:
obj.Comments.Add(new Comment(Message));
, где obj является экземпляромкласс, содержащий наблюдаемую коллекцию.
При вызове этой строки я сталкиваюсь со следующим исключением:
System.NotSupportedException: 'Этот тип CollectionView не поддерживает изменения его SourceCollection из потокаотличается от потока Dispatcher. '
Я открыл панель «Отладка> Windows> Потоки», и она работает в главном потоке.Я попытался поместить его в App.Current.Dispatcher.Invoke (...), не повезло.
Я не могу понять, почему это происходит.Чтобы сделать вещи более странными, я могу запустить это нормально, без проблем, на другом экземпляре того же класса, который был создан в одно и то же время (возвращен и создан вместе из моей базы данных в одном вызове).Первый я добавил комментарий без проблем, и все еще могу каждый раз, но все остальные, которые я попробовал, терпят неудачу.