WPF, Silverlight, Windows Phone 8 und Windows-Store-Apps

XAML Expertise: So hebt man Zeilenselektionen in DataGrid auf
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: So hebt man Zeilenselektionen in DataGrid auf“

Wird eine Zeile innerhalb von DataGrid ausgewählt, kann diese nur mittels STRG-Tastendruck und Mausklick wieder aufgehoben werden. Das Verhalten wäre allerdings natürlicher bei einem Klick in den weißen Bereich neben der Zeile.

WPF: Zeilenselektion in DataGrid aufheben

Für eine eigene Lösung sind nur wenige Zeilen Code nötig. So wird auf das MouseLeftButtonDown-Event reagiert. Innerhalb der abonnierten Methode wird überprüft, ob sich der Mauszeiger genau in der Zeile vom selektierten Item befindet. Ist das nicht der Fall, wird die Auswahl wieder aufgehoben. Der Code zur Lösung steht in Listing 1.

Listing 1: Zeilenselektion wieder aufheben
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
  if (sender != null)
  {
    DataGrid dataGrid = (DataGrid)sender;
    if (dataGrid.SelectedItems != null &&
      dataGrid.SelectedItems.Count == 1)
    {
      DataGridRow dataGridRow = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(dataGrid.SelectedItem);
      if (!dataGridRow.IsMouseOver)
      {
        dataGridRow.IsSelected = false;
      }
    }
  }
}
Abb. 1: Zeilenselektion in DataGrid wieder aufheben

Abb. 1: Zeilenselektion in DataGrid wieder aufheben

Aufmacherbild: Filled answer sheet with eraser focus on pencil via Shutterstock.com / Urheberrecht: Casper1774 Studio

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -