J'ai une classe personnalisée qui implémente INotifyPropertyChanged comme suit (propriétés étrangères et répétées enlevé):Databound TextBox pas mise à jour avec Source
Public Class Map
Implements INotifyPropertyChanged
Private _wages As Decimal
Property Wages As Decimal
Get
Return _wages
End Get
Set(value As Decimal)
Debug.Print("Event Raised: " & _wages & " " & value)
_wages = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Wages))
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
La classe est en cours de sérialisation/désérialisée correctement. Lorsque je charge le fichier XML, le TextBox qui affiche le salaire n'est pas mis à jour pour refléter la valeur des salaires.
J'ai les (DevExpress) TextBox DataBindings serties:
txtWages.DataBindings.Add(New Binding("EditValue", mymap, "Wages", False, DataSourceUpdateMode.OnPropertyChanged))
Quand je charge le fichier que je peux voir l'ancienne et la nouvelle valeur de Debug.Print:
événement actuel: 0 13
Cependant, txtWages séjours à 0
J'ai lu ces réponses Here et Here et essayé de chercher des idées, mais je suis à court d'idées.
EDIT: Il semble que si je remplis la classe avec le XML désérialisé puis que je règle les liaisons, cela fonctionne, mais pas lorsque les liaisons sont définies en premier. J'aurais pensé que ça marcherait dans les deux cas.
'MyMap' est déclaré avant le sous-objet' New'. Le code à désérialiser est: 'MyMap = BM.Utilities.FileHelper.Deserialize (Of Map) (" Routes.xml ")' sûrement c'est la même instance? –
La désérialisation crée une nouvelle instance de type 'Map'. – Fabio