Как я могу заставить DataGrid снимать выбор при щелчке мышью, когда SelectionMode = «Extended»?

По умолчанию WPF DataGrid выбирает, когда строка будет нажата, если SelectionMode = "Extended" , что я хочу, однако я также хочу, чтобы строка не выделялась, если она уже была выбрана ранее при нажатии.

Я пробовал следующее, которое отменит выбор строки, как только она будет выбрана, кажется, что выбор строки происходит до события щелчка мыши.

private void DoGridMouseLeftButtonUp(object sender, MouseButtonEventArgs args) {
    // Get source row.
    DependencyObject source = (DependencyObject)args.OriginalSource;
    var row = source.FindParent<DataGridRow>();
    if (row == null)
        return;
    // If selected, unselect.
    if (row.IsSelected) {
        row.IsSelected = false;
        args.Handled = true;
    }
}

Где я привязываю к этому событию следующую сетку.

<DataGrid SelectionMode="Extended"
          SelectionUnit="FullRow"
          MouseLeftButtonUp="DoGridMouseLeftButtonUp">
6
задан Brett Ryan 24 June 2011 в 08:23
поделиться