Я создаю систему отслеживания ошибок, которая использует Silverlight. Я использую DataGrids для отображения списков проблем, устанавливаю выбранный индекс равным -1, чтобы не отображать выбранную строку, а затем использую событие изменения выбора, чтобы открыть окно сведений о проблеме для конкретной выбранной проблемы.
Когда я пытаюсь обновить DataGrid, привязав его к ItemsSource, я отключаю событие SelectionChanged, перепривязываю DataGrid к его ItemsSource, устанавливаю SelectedIndex в -1 и затем снова включаю событие SelectionChanged. Однако независимо от того, насколько поздно я оставляю повторное включение события SelectionChanged (даже до тех пор, пока не будет завершено событие DataGrid_Loaded), событие SelectionChanged будет запущено, и всплывет окно сведений о проблеме.
Есть ли лучший способ обновить данные в DataGrid, который не приведет к изменению SelectedIndex? Если нет, есть ли способ сообщить, какие события вызваны программным изменением индекса, а не взаимодействием человека?
(Также для обсуждения, это лучший контроль для работы? Мне нужно отобразить несколько полей в строке, таких как заголовок проблемы, назначенный пользователь, запрошенный пользователем, статус и т. Д.)
Заранее спасибо.