Получение выбранного элемента datagrid, который является элементом наблюдаемой коллекции.C#

Место общения программистов C#
Anonymous
Получение выбранного элемента datagrid, который является элементом наблюдаемой коллекции.

Сообщение Anonymous »

Я нашел множество способов получить выбранный элемент таблицы данных — это легко. Однако у меня есть свойство (DataGridViews), привязанное к ItemsControl в xaml, которое является ObservableCollection. DataGridViewsModel включает DataTable (Items) и свойство Title:

Код: Выделить всё

public class DataGridViewsModel
{
public string? Title { get; set; }
public DataTable Items { get; set; }
}
private ObservableCollection? _dataGridViews;
public ObservableCollection? DataGridViews
{
get { return _dataGridViews; }
set
{
_dataGridViews = value;
NotifyOfPropertyChange(() => DataGridViews);
}
}
Идея состоит в том, что это позволяет отображать несколько сеток данных, и можно выбрать строку и нажать кнопку, связанную с этой таблицей данных (прочитать сетку данных).
Это нормально, но я не могу понять, как найти выбранную строку или выбранный индекс и т. д. Используя живое дерево, конкретная сетка данных показывает правильный выбранный индекс, но не привязывается обратно к viewmodel.
Вот код:

Код: Выделить всё





Use Selected



















А вот модель представления (примечание: с использованием Caliburn Micro):

Код: Выделить всё

public class CompareSimilarDataViewModel : Screen
{
private int _selectedIndex;

private ObservableCollection? _dataGridViews;

public CompareSimilarDataViewModel(ObservableCollection? grids)
{
_dataGridViews = grids;
}

public ObservableCollection? DataGridViews
{
get { return _dataGridViews; }
set
{
_dataGridViews = value;
NotifyOfPropertyChange(() => DataGridViews);
}
}

public int SelectedIndex
{
get { return _selectedIndex; }
set
{
_selectedIndex = value;
NotifyOfPropertyChange(nameof(SelectedIndexNumber));
}
}

#region Commands
public void btnAcceptDB(DataGridViewsModel item)
{

}
Я рвал на себе волосы, пытаясь решить эту проблему! Буду очень признателен за любую помощь.
Один из способов, который, по моему мнению, мог бы сработать, — это передать индекс выбранной строки как часть вызова кнопки — элемент XXX:

Код: Выделить всё

cal:Message.Attach="[Event Click]=[btnAcceptDB($dataContext, XXX)]"
Изменить: немного обновлено, чтобы изменить свойство на int, как было предложено. Также изменен SelectedIndexNumber на просто SelectedIndex

Подробнее здесь: https://stackoverflow.com/questions/797 ... e-collecti

Вернуться в «C#»