Я получаю DataTable из базы данных, после заполняю им DataGrid:
public ICollectionView Item
{
get { return (ICollectionView)GetValue(ItemProperty); }
set { SetValue(ItemProperty, value); }
}
public static readonly DependencyProperty ItemProperty =
DependencyProperty.Register("Item", typeof(ICollectionView),
typeof(ViewModel), new PropertyMetadata(null));
public ViewModel()
{
database = new DBModel();
data = database.GetDataTableProducts();
Item = CollectionViewSource.GetDefaultView(data);
}
Привязка данных в XAML:
<DataGrid x:Name="DataGridProducts"
AutoGenerateColumns="True"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Item}"
SelectedItem="{Binding SelectedItem}">
</DataGrid>
Мне нужно получить выбранную строку из DataGrid, но я не знаю как это сделать.
Данные для DataGrid могут изменяться (разные запросы - разные DataTable).
DataGrid (по крайне мере в этом случае) возвращает тип DataRowView. Дальше необходимые данные можно извлечь при помощи индексов.
Переменная для привязки (в ViewModel)
public DataRowView SelectedItem
{
get { return (DataRowView)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedItem. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem", typeof(DataRowView), typeof(ViewModel), new PropertyMetadata(null));
Дальше можно использовать индекс для того, чтобы достать данные.
SelectedItem[0] и так далее (номер индекса - номер столбца в DataGrid)
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники