2009-03-10 16 views
4

WPF ListView denetimine W3CError türündeki nesnelerin bir koleksiyonunu bağlamaya çalışıyordum. .NET WPF XAML "BindingExpression yolu hatası: ... özellik bulunamadı"

It işe yaramadı

 
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 

... güzel bir 13 hat sınıftı. Bu bağlama hataları Visual Studio'nun çıktı penceresinde aldım:

Eh, hayır, bu bir özellik değil. Bu sadece Kamu. WPF'nin bağlanması için yeterli değil mi?

Ben Özellikler Demirbaş çirkin 69 satıra benim sınıf uzatarak işe aldım ...

 
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 

daha iyi bir yolu var mı?

+0

Ahhh ... işte bu yüzden bağlarım çalışmıyordu! Teşekkürler. – Kieron

+0

Umarım sana biraz hayal kırıklığı kurtardım, Kieron. –

cevap

4

C# kullanıyorsanız, Otomatik Özellikler kullanayım, ama VB'de olduğunu sanmıyorum.

Muhtemelen hayır. Daha fazla ilerlemek ve sınıf uygulamanızı INOTifyPropertyChanged yapmak isteyebilirsiniz, böylece UI'niz özelliklerin değişip değişmediğini bilir.

+0

Humbug! VB'nin satır içi XML'den otomatik özelliklere sahip olmasını tercih ederim. –

+0

VB'nin (.NET 4.0/Visual Studio 2010 ile birlikte gelen) bir sonraki sürümünün otomatik özelliklere sahip olacağına inanıyorum. Şimdi yardımcı olmuyor, ama en azından sonunda yardımcı olacaktır. – Andy

1

Ben iyi yolu demezdim ama ICustomTypeDescriptor uygulamak ve GetProperties yöntemiyle sahte özellikleri olarak alanlarınızı açığa çıkarabilir. Yine de birkaç düzine alanınız olsa daha az kod olur.


Başlangıçta Robert Macnee tarafından gönderildi, ancak daha sonra kaldırıldı. Beni ilgilendirdiği için buraya geri yüklendi ...