即使单击 WPF Datagrid 中禁用的单元格也允许选择整行[关闭]

问题描述 投票:0回答:1

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

但是即使用户单击该禁用的单元格,我也需要允许在网格上进行完整的行选择。 这可能吗?

c# wpf datagrid
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.