Q:

Сaliburn.Micro datagrid имена колонок при автоматической генерации

Решил переделать проект и хочу для отображения списка различных объектов использовать обобщенный класс. Раньше для отображения списка сущностей использовалось несколько окон для каждого типа, но это не очень хорошо, поэтому возникла необходимость в создании одного окна, но для всех сущностей. Правда тут возникла проблема, а именно в имени колонок.
В windowForm для этих целей можно было использовать атрибут  [Display(Name = "Код")], но в WPF он не работает.
Для связывания используется достаточно стандартные настройки:
<DataGrid Grid.Row="1"  
          Margin="5"
          BorderThickness="1" 
          AutoGenerateColumns="False"
          GridLinesVisibility="Vertical"
          IsReadOnly="True" 
          HeadersVisibility="Column"
          ItemsSource="{Binding Items}"
          SelectedItem="{Binding Item}">
</DataGrid>

Может кто подсказать как задать имена колонок в зависимости от привязываемых сущностей?

A:

В итоге остановился на следующем решении:
View:
<DataGrid AutoGenerateColumns="True"
          x:Name="Items"
          SelectedItem="{Binding Item}" 
          AutoGeneratingColumn="Items_AutoGeneratingColumn" />

Код View:
private void Items_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    var propertyDescriptor = e.PropertyDescriptor as PropertyDescriptor;
    if(propertyDescriptor != null)
    {
        var attrubute = propertyDescriptor.Attributes.OfType<DisplayAttribute>().FirstOrDefault();
        if(attrubute != null)
        {
            e.Column.Header = attrubute.Name;
        }
        else
        {
            e.Column.Visibility = System.Windows.Visibility.Hidden;
        }
    }
}

