У меня есть небольшая проблема, но я не уверен, что это действительно проблема, но циник во мне думает, что я делаю что-то в корне неправильно.
У меня есть модель представления со свойством, которое представляет собой ObservableCollection отображаемых подмоделей:
public SeatingPlanItemCollection DisplayItems
{
get
{
return _displayItems;
}
private set
{
SetField(ref _displayItems, value, () => DisplayItems);
}
}
Затем он связывается через XAML со свойством ItemControl ItemSource. Из определенных команд эту коллекцию можно изменить внутри модели, при запуске кода все в порядке, коллекция изменяется, а ItemsControls обновляется прекрасно и быстро. Однако я заметил, что иногда во время отладки изменение будет исключительно медленным, и в окне вывода будет отображаться целая куча ошибок привязки. Это происходит только в том случае, если я нарушил код в любой момент до изменения свойства. Если я нахожусь в режиме отладки, но не сломался ни в какой момент, тогда все в порядке, и об ошибках привязки не сообщается.
Если подумать, это имеет смысл, элементы управления привязываются к элементам в коллекции, коллекция затем изменяется и нарушает привязки, коллекция вызывает событие изменения коллекции, и представление успешно перепривязывается.
Я бы хотел знать:
- Почему ошибки привязки выводятся только после того, как я взломал код?
- Стоит ли беспокоиться об этом, поскольку медлительность становится очевидной только после взлома кода, который, очевидно, не произойдет в рабочей среде? (Хотя я предполагаю, что за кулисами все еще может быть незначительное снижение производительности, о котором я не знаю, главное, что я замечаю, это среда выполнения, выдающая ошибки в окно вывода).
- Если это проблема, как мне справиться с изменением коллекции, с которой связан ItemsControl?
Надеюсь, это достаточно ясно.
Заранее спасибо.
Пол
EDIT
В какой-то момент я решил, что проблема заключается в изменении экземпляра коллекции, поэтому я решил вместо этого выделить выделенный экземпляр коллекции, и когда его нужно было изменить, я очистил его, а затем добавил все новые элементы, возникла та же проблема .