none
Perte du databinding après une désérialisation XML RRS feed

  • Question

  • Bonjour,

     

    Je sérialise un objet en XML pour sauvegarder son état. Lorsque je le désérialise mon objet reprend ses bonnes valeurs, mais les contrôles qui sont bindés sur cet objet ne sont plus mis à jour.

     

    Avant la désérialisation le databinding entre mon objet et les contrôles liés fonctionne parfaitement. Après avoir effectué une désérialisation avec le code ci-dessous, le databinding ne fonctionne plus du tout (ni de l'objet vers les contrôles liés, ni des contrôles vers l'objet).

    Code Snippet

    Public Shared Function Deserialize(ByVal str As String, ByVal t As Type) As Object

    Using xmlReader As XmlReader = xmlReader.Create(New StringReader(str))

    Dim xmlSerialiser As New XmlSerializer(t)

    Deserialize = xmlSerialiser.Deserialize(xmlReader)

    Return Deserialize

    End Function

     

     

    Pour le binding j'utilise le code :

    Code Snippet

    Public Class BaseClass

    Implements INotifyPropertyChanged

    Protected Overridable Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)

    RaiseEvent PropertyChanged(Me, e)

    End Sub

    Public Event PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged

     

    Private sType As String

     

    Public Property Type() As String

    Get

    Return sType

    End Get

    Set(ByVal value As String)

    sType = value

    Me.OnPropertyChanged(New PropertyChangedEventArgs("Type"))

    End Set

    End Property

    End Class

     

     

    Et pour lier mon objet et les contrôles :

    Code Snippet

    dim monObjet as new BaseClass

    txtType.DataBindings.Add("Text", monObjet, "Type", True, DataSourceUpdateMode.OnPropertyChanged)

     

     

    Bien que le databinding ne semble plus fonctionner, si après la désérialisation je tente d'établir une nouvelle liaison entre mon objet et les contrôles j'obtiens une erreur : Deux liaisons de la collection vont être liées à la même propriété.

     

    Si après la désérialisation je supprime le databinding, et que je le rétablit : tout fonctionne à nouveau... mais ce n'est pas très propre comme technique .

     

    Est-ce que quelqu'un aurait déjà rencontré ce type de problème ?

     

    Merci,

    Pascal

     

     

    jeudi 31 juillet 2008 10:18