WPF如何单击DataGrid中的行以取消选择项

Rac*_*ace 2 c# wpf wpfdatagrid

如果在行外单击,如何删除对行的选择。就像下面显示的图像的红色区域一样

在此处输入图片说明

相关的xaml显示如下:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>

        <DataGrid x:Name="ClientsList" Grid.Row="0" Grid.Column="0" CanUserAddRows="False"
                  SelectionMode="Extended" SelectionUnit="FullRow"
                  ItemsSource="{Binding ClientItems}" LostFocus="ClientsList_LostFocus" Background="Green">
        </DataGrid>

        <StackPanel Margin="2" Grid.Row="1" Grid.Column="0" Orientation="Horizontal">
            <Button x:Name="AddButton"  Margin="2,0,0,0" Content="+" Height="25" Width="40" Click="AddButton_Click"/>
            <Button x:Name="DeleteButton" Margin="2,0,0,0" Content="-" Height="25" Width="40" Click="DeleteButton_Click"/>
        </StackPanel>
    </Grid>
Run Code Online (Sandbox Code Playgroud)

小智 5

在这种情况下,如果单击空白区域,则将OriginalSourceScrollViewer(如果未应用其他样式)。尝试将以下MouseUp事件处理程序添加到DataGrid

    private void OnDataGridMouseUp(object o, MouseButtonEventArgs e)
    {
        if (e.OriginalSource is ScrollViewer)
        {
            ((DataGrid) o).UnselectAll();
        }
    }
Run Code Online (Sandbox Code Playgroud)