2010-12-03 24 views
1

J'utilise des classes Linq to SQL dans mon WCF. Ces classes sont renvoyées à partir des méthodes WCF à Silverlight. Maintenant, je veux ajouter une propriété personnalisée sur une classe générée (côté Silverlight) et déclencher un PropertyChangedEvent sur cette propriété particulière, basé sur un autre PropertyChangedEvent d'une autre propriété. Pour être clair, voici un morceau de code qui ne fonctionne pas: Dans Silverlight, ajoutez une propriété personnalisée à une classe Linq générée + gérez les événements

 
    Partial Public Class DataConnection
Public Sub New() AddHandler Me.PropertyChanged, AddressOf _PropertyChanged End Sub

 Private Sub _PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) 
      If e.PropertyName = "ConnectionType" Then 
       Me.RaisePropertyChanged("ConnectionTypeEnum") 
      End If 
     End Sub 

     Private _ConnectionTypeEnum As String 
     Public ReadOnly Property ConnectionTypeEnum() As String 
      Get 
       Select Case Me.ConnectionType 
        Return //Something based on ConnectionType // 
       End Select 
      End Get 
     End Property 


    End Class 

Le problème est que le code dans New() n'est jamais exécuté, donc je ne sais jamais quand le ConnectionType est modifié, donc je ne peux pas déclencher le PropertyChanged sur ConnectionTypeEnum. (cette propriété est utilisée dans une liaison unidirectionnelle, donc j'en ai besoin)

Quelqu'un at-il une solution pour cela?

Merci

Répondre

2

Vous pouvez utiliser OnDeserializedAttribute

<OnDeserializedAttribute()> _ 
Public Sub WhenDeserialized(context As StreamingContext) 
    AddHandler Me.PropertyChanged, AddressOf _PropertyChanged 
End Sub 
+0

merci, fonctionne parfaitement! –