我有一个自动生成它的列的 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 属性。如果要显示的对象具有名称属性,则可以正常工作。但是,如果我有未命名为“名称”的翻译属性,显然不会显示任何数据。我将如何正确绑定以涵盖所有翻译项目。