Использование предложения @ Marc было началом решения, но само по себе столбцы AutoGenerated по-прежнему имеют имена свойств в качестве заголовков.
Чтобы получить DisplayName, вам нужно добавить подпрограмму (в коде сзади) для обработки события GridAutoGeneratingColumn:
Private Sub OnGeneratingColumn(sender As Object, e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles Grid.AutoGeneratingColumn
Dim pd As System.ComponentModel.PropertyDescriptor = e.PropertyDescriptor
e.Column.Header = pd.DisplayName
End Sub
Дополнительным и лучшим решением является использование пространства имен ComponentModel.DataAnnotations и указание ShortName:
Public Class modelQ016
<Display(shortname:="DB Name")>
Public Property DBNAME As String
...
OnGeneratingColumn становится:
Dim pd As System.ComponentModel.PropertyDescriptor = e.PropertyDescriptor
Dim DisplayAttrib As System.ComponentModel.DataAnnotations.DisplayAttribute =
pd.Attributes(GetType(ComponentModel.DataAnnotations.DisplayAttribute))
If Not DisplayAttrib Is Nothing Then
e.Column.Header = DisplayAttrib.ShortName
End If
Обратите внимание, что порядок атрибутов в массиве атрибутов изменяется, поэтому вы должны использовать GetType (...) вместо числового параметра ... Такое удовольствие!