Dopo aver utilizzato Snoop per analizzare l'Albero visiva di un'applicazione di test ho messo insieme, mi si avvicinò con questa soluzione utilizzando l'evento DataGrid_Loaded):
private void TheGrid_Loaded(object sender, RoutedEventArgs e) {
var dataGrid = (DataGrid)sender;
var border = (Border)VisualTreeHelper.GetChild(dataGrid, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
var grid = (Grid)VisualTreeHelper.GetChild(scrollViewer, 0);
var button = (Button)VisualTreeHelper.GetChild(grid, 0);
button.IsEnabled = false;
}
Ci può essere una soluzione XAML più elegante, ma questo è quello che mi è venuto in mente per primo, e sembra funzionare abbastanza bene (ovviamente non sto facendo nessuna gestione delle eccezioni).
Nota: non ho giocato con disabilitazione/riattivazione di DataGrid per garantire che il pulsante di selezione tutto rimanga disattivato. Se non viene disabilitato, è possibile anche collegarsi all'evento DataGrid_IsEnabledChanged.
Spero che questo aiuti !!
Non sono sicuro di disabilitarlo, ma ho scoperto che nascondere i RowHeaders lo nasconderà. (causando problemi per me perché voglio nascondere RowHeaders ma mostra il pulsante SelectAll) – Rachel