Да, это возможно (другими словами, вы хотите отключить определенную ячейку), но я бы предпочел использовать ValueConverter
или CellTemplateSelector
для достижения цели.В приведенном ниже предложении есть ограничение, согласно которому вы должны установить для свойства DataGrid
AlternationCount
количество элементов в ItemsSource.
Это обходной путь для получения индекса строки, поскольку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>