В основном ваша кнопка наследует datacontext объекта данных строки. Я называю это MyObject и надеюсь, что MyObject.ID - это то, что вы хотели.
private void Button_Click(object sender, RoutedEventArgs e)
{
MyObject obj = ((FrameworkElement)sender).DataContext as MyObject;
//Do whatever you wanted to do with MyObject.ID
}
MyObject obj= (MyObject)((Button)e.Source).DataContext;
Другой способ, который связывается с параметром команды DataContext и уважает MVVM, как Джоби Джой говорит, что кнопка наследует строку формы datacontext.
Кнопка в XAML
<RadButton Content="..." Command="{Binding RowActionCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext}"/>
Исполнение команды
public void Execute(object parameter)
{
if (parameter is MyObject)
{
}
}
Если DataContext DataGrid является объектом DataView (свойство DefaultView для DataTable), вы также можете сделать это:
private void Button_Click(object sender, RoutedEventArgs e) {
DataRowView row = (DataRowView)((Button)e.Source).DataContext;
}
Другим способом, который я хотел бы сделать это, является привязка идентификатора к свойству CommandParameter кнопки:
<Button Click="Button_Click" CommandParameter="{Binding Path=ID}">View Details</Button>
Затем вы можете получить к нему доступ так же, как в коде:
private void Button_Click(object sender, RoutedEventArgs e)
{
object ID = ((Button)sender).CommandParameter;
}