2017-05-29 88 views
-1

我有WPF Datagrid,禁用了一些列(通过将IsEnabled = false样式应用于DataGridCell),所以单元格呈灰色并且不允许编辑。允许行选择禁用WPF数据格中的单元格

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

+2

是的,这是可能的。 – Karolis

+0

@ mm8:是的,完美的作品,谢谢。 –

+1

@ karolis:是的,非常有用的答案确实... –

回答

1

你可以处理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; 
} 
相关问题