Получить исходный экземпляр за выбранной строкой DataGrid

#c# #wpf #xaml #datagrid

#c# #wpf #xaml #datagrid

Вопрос:

У меня есть DataGrid в xaml, и я заполняю его, устанавливая ItemsSource следующим образом

 var myList = new List<Product>();
//Product is a standard class created for the purpose of populating the datagrid

 myList.Add(new Product(){Name = "bla", SerialNumber = 1234})
 myList.Add(new Product(){Name = "somename", SerialNumber = 567})

dataGrid.ItemsSource = myList;
 

Таким образом, в основном каждая строка в datagrid заполняется значениями из экземпляра класса Product.

Позже в коде, когда пользователь выбирает строку в datagrid и нажимает клавишу, я получаю выбранную строку следующим образом

 dataGrid.SelectedItem
 

Но теперь я, похоже, не могу понять, как получить экземпляр продукта, который использовался для создания этой выбранной строки.

Так, например, что-то вроде var test = DataGrid.SelectedItem .Экземпляр, который будет таким же, как этот this var test = new Product(){Name = «bla», SerialNumber = 1234}

Ответ №1:

dataGrid.SelectedItem Свойство должно возвращать ваш Product экземпляр, но если у вас есть DataGridRow объект, вы можете получить связанный элемент данных, используя DataGridRow.Item свойство:

  Product selectedProduct = (Product)yourDataGridRow.Item;
 

Комментарии:

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

2. Да, DataGridRow.Item свойство имеет тип object .