Изменение связанного экземпляра ObservableCollection - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть небольшая проблема, но я не уверен, что это действительно проблема, но циник во мне думает, что я делаю что-то в корне неправильно.

У меня есть модель представления со свойством, которое представляет собой ObservableCollection отображаемых подмоделей:

    public SeatingPlanItemCollection DisplayItems
    {
        get 
        {
            return _displayItems; 
        }
        private set
        {
            SetField(ref _displayItems, value, () => DisplayItems);
        }
    }

Затем он связывается через XAML со свойством ItemControl ItemSource. Из определенных команд эту коллекцию можно изменить внутри модели, при запуске кода все в порядке, коллекция изменяется, а ItemsControls обновляется прекрасно и быстро. Однако я заметил, что иногда во время отладки изменение будет исключительно медленным, и в окне вывода будет отображаться целая куча ошибок привязки. Это происходит только в том случае, если я нарушил код в любой момент до изменения свойства. Если я нахожусь в режиме отладки, но не сломался ни в какой момент, тогда все в порядке, и об ошибках привязки не сообщается.

Если подумать, это имеет смысл, элементы управления привязываются к элементам в коллекции, коллекция затем изменяется и нарушает привязки, коллекция вызывает событие изменения коллекции, и представление успешно перепривязывается.

Я бы хотел знать:

  1. Почему ошибки привязки выводятся только после того, как я взломал код?
  2. Стоит ли беспокоиться об этом, поскольку медлительность становится очевидной только после взлома кода, который, очевидно, не произойдет в рабочей среде? (Хотя я предполагаю, что за кулисами все еще может быть незначительное снижение производительности, о котором я не знаю, главное, что я замечаю, это среда выполнения, выдающая ошибки в окно вывода).
  3. Если это проблема, как мне справиться с изменением коллекции, с которой связан ItemsControl?

Надеюсь, это достаточно ясно.

Заранее спасибо.

Пол

EDIT

В какой-то момент я решил, что проблема заключается в изменении экземпляра коллекции, поэтому я решил вместо этого выделить выделенный экземпляр коллекции, и когда его нужно было изменить, я очистил его, а затем добавил все новые элементы, возникла та же проблема .

1 Ответ

1 голос
/ 17 февраля 2012

Я заметил, что вывод ошибок привязки в окно вывода значительно замедляет WPF, по какой-то причине я сам это заметил. Я выключаю, если мне это не нужно.

...