我有一个 C# WPF Datagrid,其中禁用了某些列(通过对 DataGridCell 应用 IsEnabled=false 样式),因此单元格呈灰色且不允许编辑。
但是即使用户单击该禁用的单元格,我也需要允许在网格上进行完整的行选择。 这可能吗?
您可以处理
PreviewMouseLeftButtonDown
的 DataGridRow
事件:
<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;
}