列の名前を事前に定義すると、これははるかに簡単になり、xaml コードのみが必要になります。
<data:Datagrid x:Name="Grid11" AutoGenerateColumns="False" ColumnWidth="*" SelectionMode="Single" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Index" IsReadOnly="True" Binding="{Binding LocalIndex}" />
<data:DataGridTextColumn Header="ID" IsReadOnly="True" Binding="{Binding Id}" />
<data:DataGridTextColumn Header="Name" Binding="{Binding Name, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True, Mode=TwoWay}" >
</data:DataGrid.Columns>
</data:SolacomDatagrid>
上記のサンプルでは、name 列は編集可能ですが、他の 2 列は読み取り専用です。私はバインディングを使用しているので、コード ビハインドでは、バインドされている属性を置き換えるだけで何も変更する必要がないことに注意してください。
編集
foreach (DataGridColumn item in DataGrid.Columns)
{
//if(column name condition of column id)
item.IsReadOnly = true;
}
このループにより、すべての列を読み取り専用に設定できるはずです。個人的には、このイベントを DataGrid Loaded イベントで実行したいと思います。これが早すぎると列がまだ存在しないためです。
お役に立てれば、