[c#] WPF DataGrid - Pulsante in una colonna, ottenendo la riga da cui proviene il gestore di eventi Click


Answers

Un altro modo in cui mi piace farlo è associare l'ID alla proprietà CommandParameter del pulsante:

<Button Click="Button_Click" CommandParameter="{Binding Path=ID}">View Details</Button>

Quindi puoi accedervi così nel codice:

private void Button_Click(object sender, RoutedEventArgs e)
{
    object ID = ((Button)sender).CommandParameter;
}
Question

Ho impostato la risorsa articoli del mio Datagrid WPF in un elenco di oggetti restituiti dal mio DAL. Ho anche aggiunto una colonna in più che contiene un pulsante, la xaml è sotto.

<toolkit:DataGridTemplateColumn  MinWidth="100" Header="View">
    <toolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Click="Button_Click">View Details</Button>
        </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

Questo rende bene. Tuttavia, con il metodo Button_Click , c'è un modo per ottenere la riga sul datagrid in cui risiede il pulsante? Più in particolare, una delle proprietà dei miei oggetti è "Id", e mi piacerebbe poterlo trasferire nel costruttore di un altro modulo nel gestore di eventi.

private void Button_Click(object sender, RoutedEventArgs e)
    {
        //I need to know which row this button is on so I can retrieve the "id"  
    }

Forse ho bisogno di qualcosa in più nel mio xaml, o forse ne parlerò in modo indiretto? Qualsiasi aiuto / consiglio apprezzato.




MyObject obj= (MyObject)((Button)e.Source).DataContext;



Links