Ich verwende das Datagrid von WPF-Toolkit in einer WPF-Windows-Anwendung. Es verfügt über eine Dataplatte im Zeilenheader, die eine Checkbox-Spalte zur Auswahl der Zeilen erstellt.Wie zeigt man ein Popup-Menü bei Klick auf Checkbox Spaltenüberschrift in Datagrid?
Wenn Sie auf die Kopfzeile der Kontrollkästchenspalte (die oberste Zelle links im Gitter) klicken, werden alle Kontrollkästchen im Raster aktiviert, wodurch alle Zeilen ausgewählt werden.
Relevante Teile aus dem XAML
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit" >
<toolkit:DataGrid Name="dataGrid" ItemsSource="{Binding}"
AutoGenerateColumns="True" SelectionMode="Extended" CanResizeRows="False">
<toolkit:DataGrid.RowHeaderTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{
Binding Path=IsSelected,
Mode=TwoWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type toolkit:DataGridRow}}}"
/>
</Grid>
</DataTemplate>
</toolkit:DataGrid.RowHeaderTemplate>
</toolkit:DataGrid>
</Window>
Jetzt möchte ich wissen, wie diese Klick zu behandeln. Ich plane, damit umzugehen und ein Popupmenü stattdessen anzuzeigen.
Welches Klickereignis der Steuerung sollte ich für diesen Zweck festlegen?
Antwort: SelectAllCommand unter Verwendung der Ereignisse zu behandeln wie so (Beispiel)
datagrid.CommandBindings.Add(new CommandBinding(
Microsoft.Windows.Controls.DataGrid.SelectAllCommand,
OnSelectAll, CanExecuteSelectAll));
public void OnSelectAll(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("All Selected");
}
public void CanExecuteSelectAll(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
Console.WriteLine("Can I execute?");
}