Ваш DataGrid
связан с источником данных. В таком случае следующая строка вызовет проблемы:
DataRowView row_selected = dg.SelectedItem as DataRowView;
Для связанных элементов управления SelectedItem
относится к типу базового элемента коллекции, а не DataRowView
. Таким образом, приведенная выше строка установит raw_selected
в null
, а следующий блок кода не будет выполнен. Вместо этого вы должны привести его к этому типу, а затем заполнить текстовые поля напрямую, используя свойства этого элемента.
Я предлагаю вам узнать о MVVM. Уровень вашей виртуальной машины должен предоставлять свойство типа коллекции для привязки ItemSource
к нему, а другое свойство для привязки SelectedItem
. Затем вы сможете использовать это второе свойство для привязки ваших текстовых полей. Там не будет необходимости использовать SelectionChanged
событие. На самом деле в файле с выделенным кодом Windows не будет абсолютно никакого пользовательского кода.
Редактировать
Если вы хотите придерживаться подхода к обработке событий, все, что вам нужно сделать, это заменить вышеприведенную строку следующим:
var row_selected = dg.SelectedItem as Booking;
Я предполагаю, что тип данных ваших элементов в коллекции bookings
равен Booking
. Если это что-то еще, используйте это имя типа.