允许在 WPF Datagrid 中为禁用的单元格选择行

Allow row selection for disabled cells in WPF Datagrid

我有一个禁用了某些列的 WPF Datagrid(通过对 DataGridCell 应用 IsEnabled=false 样式),因此单元格呈灰色且不允许编辑。

但如果用户单击禁用的单元格,我需要允许整行选择。 这可能吗?

您可以处理 DataGridRowPreviewMouseLeftButtonDown 事件:

<DataGrid x:Name="dg" SelectionUnit="FullRow">
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="dg_PreviewMouseLeftButtonDown" />
        </Style>
    </DataGrid.RowStyle>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding}" />
        <DataGridTextColumn Binding="{Binding}">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="IsEnabled" Value="False" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

private void dg_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    DataGridRow row = sender as DataGridRow;
    dg.SelectedItem = row.DataContext;
}