Поместите данные из DataGridRow в Button CommandParameter [duplicate]

84
задан Dave Clemmer 6 August 2011 в 17:35
поделиться

5 ответов

В основном ваша кнопка наследует 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
}
108
ответ дан Jobi Joy 4 September 2018 в 07:12
поделиться
MyObject obj= (MyObject)((Button)e.Source).DataContext;
3
ответ дан antyrat 4 September 2018 в 07:12
поделиться

Другой способ, который связывается с параметром команды 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)
        {

        }
    }
9
ответ дан Petr Šebesta 4 September 2018 в 07:12
поделиться

Если DataContext DataGrid является объектом DataView (свойство DefaultView для DataTable), вы также можете сделать это:

private void Button_Click(object sender, RoutedEventArgs e) {
   DataRowView row = (DataRowView)((Button)e.Source).DataContext;
}
-1
ответ дан SurfingSanta 4 September 2018 в 07:12
поделиться

Другим способом, который я хотел бы сделать это, является привязка идентификатора к свойству 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;
}
37
ответ дан xr280xr 4 September 2018 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: