Я пытался привязать коллекцию объектов моего типа W3CError к элементу управления WPF ListView.
Это был маленький класс из 13 линий ...
Class W3CError
Public Type As ErrorOrWarning
Public Line As Integer
Public Col As Integer
Public Message As String
Public MessageId As String
Public Explanation As String
Public Source As String
Enum ErrorOrWarning
ValidationError
ValidationWarning
End Enum
End Class
Это не сработало. Я получил эти ошибки привязки в окне вывода Visual Studio:
System.Windows.Data Ошибка: 39:
Ошибка пути BindingExpression: 'Line'
свойство не найдено на «объекте»
'' W3CError '(HashCode = ...)'.
BindingExpression: Path = линия;
DataItem = 'W3CError'
(HashCode = ...); целевой элемент
'TextBlock' (Name = ''); целевое свойство
is 'Text' (тип 'String')
Ну, нет, это не собственность. Это просто публично. Я полагаю, этого недостаточно для связывания WPF?
Я заставил его работать, расширив свой класс до 69 уродливых шаблонов свойств ...
Class W3CError
Private _Type As ErrorOrWarning
Private _Line As Integer
Private _Col As Integer
Private _Message As String
Private _MessageId As String
Private _Explanation As String
Private _Source As String
Enum ErrorOrWarning
ValidationError
ValidationWarning
End Enum
Public Property Type() As ErrorOrWarning
Get
Return _Type
End Get
Set(ByVal value As ErrorOrWarning)
_Type = value
End Set
End Property
Public Property Line() As Integer
Get
Return _Line
End Get
Set(ByVal value As Integer)
_Line = value
End Set
End Property
Public Property Col() As Integer
Get
Return _Col
End Get
Set(ByVal value As Integer)
_Col = value
End Set
End Property
Public Property Message() As String
Get
Return _Message
End Get
Set(ByVal value As String)
_Message = value
End Set
End Property
Public Property MessageId() As String
Get
Return _MessageId
End Get
Set(ByVal value As String)
_MessageId = value
End Set
End Property
Public Property Explanation() As String
Get
Return _Explanation
End Get
Set(ByVal value As String)
_Explanation = value
End Set
End Property
Public Property Source() As String
Get
Return _Source
End Get
Set(ByVal value As String)
_Source = value
End Set
End Property
End Class
Есть ли лучший способ?