允许在 WPF Datagrid 中为禁用的单元格选择行
Allow row selection for disabled cells in WPF Datagrid
我有一个禁用了某些列的 WPF Datagrid(通过对 DataGridCell 应用 IsEnabled=false 样式),因此单元格呈灰色且不允许编辑。
但如果用户单击禁用的单元格,我需要允许整行选择。
这可能吗?
您可以处理 DataGridRow
的 PreviewMouseLeftButtonDown
事件:
<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;
}
我有一个禁用了某些列的 WPF Datagrid(通过对 DataGridCell 应用 IsEnabled=false 样式),因此单元格呈灰色且不允许编辑。
但如果用户单击禁用的单元格,我需要允许整行选择。 这可能吗?
您可以处理 DataGridRow
的 PreviewMouseLeftButtonDown
事件:
<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;
}