データグリッドでColumnsコレクションを見つけ、それを繰り返し処理して特定の列名を見つけることを望んでいました。ただし、列のx:Name属性をアドレス指定する方法がわかりません。このxamlは、DataGridTextColumnとDataGridTemplateColumnに関する私の問題を示しています。
<t:DataGrid x:Name="dgEmployees" ItemsSource="{Binding Employees}"
AutoGenerateColumns="false" Height="300" >
<t:DataGrid.Columns>
<t:DataGridTextColumn x:Name="FirstName" Header="FirstName"
Binding="{Binding FirstName}" />
<t:DataGridTemplateColumn x:Name="LastName" Header="LastName" >
<t:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LastName}" />
</DataTemplate>
</t:DataGridTemplateColumn.CellTemplate>
</t:DataGridTemplateColumn>
</t:DataGrid.Columns>
</t:DataGrid>
そしてここに私のコードがあります:
DataGrid dg = this.dgEmployees;
foreach (var column in dg.Columns)
{
System.Console.WriteLine("name: " + (string)column.GetValue(NameProperty));
}
実行時には、値は存在しません。column.GetValueは何も返しません。Snoopを使用して、DataGridTextColumnまたはDataGridTemplateColumnのいずれにもNameプロパティがないことを確認しました。
私は何が欠けていますか?