列を自動生成する DataGrid があります。
コードでは、AutoGeneratingColumn イベントを実装して、翻訳データ型の特定のテンプレートを設定します。
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if(e.PropertyType == typeof(Translation)){
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.CellTemplate = (DataTemplate)Resources["LanguageTemplate"];
e.Column = templateColumn;
}
}
データ テンプレート:
<DataTemplate x:Key="LanguageTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name.ActualTranslation}" HorizontalAlignment="Stretch" Grid.Column="0"></TextBlock>
<Image Source="{lex:LocImage en}" Height="15" HorizontalAlignment="Right" Grid.Column="1" Visibility="{Binding Name.HasCurrentLanguage, Converter={StaticResource boolToVis}, ConverterParameter=true}" ></Image>
</Grid>
</DataTemplate>
ここで問題が発生しました: TextBlock が Name プロパティにバインドされています。表示されるオブジェクトに Name プロパティがある場合、これは正常に機能します。しかし、「名前」という名前が付いていない翻訳プロパティがある場合、明らかにデータは表示されません。すべての翻訳アイテムをカバーするために正しくバインドするにはどうすればよいですか。