@xXNullXx

Причем тут преобразование типа?

Доброго времени суток!

Нужно узнать какую строку я выбрал по клику в DateGrid,
private void DGMaterials_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            DataRowView row = (DataRowView)dGMaterials.SelectedItem;

            MessageBox.Show(" ID: " + row["Id"]);
        }

но когда я это делаю то на 3 строке вылетает ошибка:
Не удалось привести тип объекта "DemoExam2018.ViewModel.OrderingMaterialsPageViewModel" к типу "System.Data.DataRowView


Вопрос причем тут преобразование типа?
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
@Nujabes37
:DEATH
(DataRowView)dGMaterials.SelectedItem;
!!!
https://docs.microsoft.com/ru-ru/dotnet/csharp/pro...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AlienJust
Разработчик ПО
Ну если надо прям с плеча, то:
private void DGMaterials_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    DataGrid grid = sender as DataGrid;
    if (grid != null && grid.SelectedItems != null && grid.SelectedItems.Count == 1)
    {
        DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow;
        DataRowView row = (DataRowView)dgr.Item;
        MessageBox.Show(" ID: " + row["Id"]);
    }
}


хотя наверное Id без проблем достаётся из ViewModel :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы