在 WPF DataGrid 中禁用第一行的第一列

Disable First Column of First Row in WPF DataGrid

有没有办法(使用样式和多触发器)始终禁用 WPF 控件中 DataGrid 第一行的第一列?这是一个模板化列,在编辑模式下显示组合框,在正常模式下显示文本框。我希望它永远不会进入编辑模式(仅此列)。该行中的其余列应该能够进入编辑模式。

是的,这是可能的(换句话说,你想禁用一个确定的单元格),但我更愿意使用 ValueConverterCellTemplateSelector 来达到目标​​。

在下面的解决方案中有一个限制,您必须将 DataGridAlternationCount 属性 设置为 ItemsSource 中元素的数量。
这是一个获取行索引的"work around",因为DataGridRow没有属性获取索引(只有一个方法GetIndex())。

<DataGrid ItemsSource="{Binding YourItemsCollection}" AutoGenerateColumns="false" AlternationCount="{Binding YourItemsCollection.Count}">
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Column.DisplayIndex, RelativeSource={RelativeSource Self}}" Value="0"/>
                        <Condition Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="0"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.Setters>
                        <Setter Property="IsEnabled" Value="False" />
                    </MultiDataTrigger.Setters>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>