Après avoir passé une journée à essayer de trouver la réponse à ma question, je vais enfin poser la question. :)Débutant WPF Reliure Question
En parcourant les pages de manuel de MSDN, je trouve que je peux enfin supprimer les procédures de remplissage de formulaire qui se multiplient et connecter chaque champ (TextBox, CheckBox, etc.) à la propriété que j'ai choisie.
J'ai une classe appelée ArticleItem qui gère toutes les données dans ce cas.
Code VB:
Public ArtItem as New ArticleItem
Private Sub LookUpArt()
If txtArtNo.Text.Length > 0 then
ArtItem.Load(txtArtNo.Text)
End If
End Sub
XAML:
<Page DataContext="{Binding RelativeSource={RelativeSource Self}}">
<!-- ... -->
<TextBox x:Name="txtDescr" Text="{Binding ArtItem, Path=Descr}" />
Maintenant, je n'ai aucun problème peuplant les listboxes, mais je ne reçois aucune réaction dans mon champ de saisie.
Qu'est-ce qui me manque?
@Jonas: J'ai trouvé un autre problème. –
Ok, je lui ai donné un autre coup de feu. Ma classe implémente maintenant l'interface INotifyPropertyChanged, l'ArtiItem est devenu une instance privée ('Private _ArtItem as New ArticleItem') et a créé une propriété publique nommée' ArtItem' qui retourne la valeur. La propriété Descr déclenche également l'événement 'PropertyChanged' lors de la modification. Le XAML est également mis à jour à 'Text =" {Binding ArtItem.Descr} "' Mais la zone de texte reste vide ... – Jonas
Donc les deux classes implémentent l'interface et les deux propriétés auxquelles vous vous liez via le chemin 'ArtItem.Descr' sont publiques et augmenter l'événement respectif dans le setter? Si tel est le cas, cela devrait fonctionner, étant donné que 'ArtItem' est une propriété de votre page qui a été définie sur DataContext et que le DataContext est hérité du TextBox. Il peut y avoir d'autres exigences auxquelles je ne peux penser en ce moment. Essayez de [déboguer la liaison] (http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/debugging-data-bindings-in-a-wpf-or-silverlight-application.aspx) et publiez le code complet si vous échouez. –