Доброго времени суток. К делу: в DataGrid, в таблицу нужно добавить столбик кнопок, это было сделано через DataGridTemplate. Во всех строчках (их n количество) лежит одна и та же кнопка, заранее определенная в коде xaml. При нажатии на нее нужно вернуть номер строчки в которой она находится. Как это можно было бы сделать в коде на с#?
Данным кодом я добавил кнопку в таблицу (xaml):
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
x:Name="bToCorrect"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Content="" Width="10" Height="10"
Click="ToCorrect_Click"
/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Так же, таблица имеет свой ItemSource:
main.dgTable.ItemsSource = WriteAndRead.ReadForTable(main.Title);
Этот код находится в классе решения.
Вот скриншот самой таблицы, то что у меня есть на данный момент: https://ibb.co/kEBpW6. Как вы можете видеть на скриншоте, в каждой строчке есть своя кнопка, но это одна кнопка, продублированная на все строчки. Мне нужно, чтобы при нажатии на кнопку она получала, либо уже содержала в себе номер строчки в которой на нее нажали. Помогите разобраться с этим.
Судя по вашему XAML Click="ToCorrect_Click" вы не пользуетесь командами и MVVM. Потому можно сделать так:
1) назначить имя для DataGrid
<DataGrid x:Name="_dataGridStations"
2) воспользоваться свойством Tag
<DataTemplate>
<Button Content="?"
Width="25"
Height="25"
Tag="{Binding SelectedIndex, ElementName=_dataGridStations}"
Click="Button_Click"/>
</DataTemplate>
3) тогда в обработчике можно сделать так
private void Button_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
int index = Int32.Parse(button.Tag.ToString());
MessageBox.Show(index.ToString());
}
P.S. у контролов, которые отображают коллекции: ComboBox, ListBox, DataGrid есть ряд свойств: SelectedItem - выделенный элемент, SelectedIndex - индекс выделенного элемента, ItemsSource - собственно коллекция-источник для отображения. В третьей строке происходит привязка к свойству кнопки Tag индекса выбранного элемента в DataGrid.
Если у вас какие-то проблемы, то где-то вы неправильно скопировали код. Это легко проверить, установите точку останова на строку int index = Int32.Parse(button.Tag.ToString()); и проверте значение button.Tag.ToString(). -1 может говорить о том, что был не выделен элемент в DataGrid.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей