J'ai créé deux UserControls, un ValidationManager et un ValidationOutput. Sur un formulaire donné, il y a un contrôle ValidationManager et plusieurs contrôles ValidationOutput, un pour chaque contrôle validé. Le ValidationManager reçoit une liste d'erreurs de validation lorsque le formulaire est soumis. Je veux que chaque contrôle ValidationOutput regarde cette liste et vérifie s'il y a des erreurs pertinentes.Transférer la référence WPC UserControl à un autre UserControl
Le code ressemble un peu à ceci:
<r:ValidationManager x:Name="myValidationManager" />
...
<TextBox Name="SomeField" />
<r:ValidationOutput FieldName="SomeField" />
Je dois passer une référence à la ValidationManager à chacun des contrôles ValidationOutput. J'ai ajouté une propriété ValidationManager à l'objet ValidationOutput UserControl, mais je ne sais pas comment transmettre la référence au contrôle. Je l'ai essayé ce qui suit, mais je suis juste agrippant pailles:
<r:ValidationOutput ValidationManager="myValidationManager" />
...and...
<r:ValidationOutput ValidationManager="{Binding myValidationManager}" />
Les premiers résultats dans une erreur « Propriété « ValidationManager » n'a pas été trouvé ou non sérialisable pour le type « ValidationOutput » » et le second « A ' La 'liaison' ne peut pas être définie sur la propriété 'ValidationManager' du type 'ValidationControl'. Une 'liaison' ne peut être définie que sur une DependencyProperty d'un DependencyObject. "
c'est le cas parfait pour MVVM. Passer des références aux contrôles autour peut devenir vraiment salissant. Si vous retournez la vue parent avec un ViewModel comme DataContext, les vues enfant peuvent hériter du DataContext et simplement se lier aux propriétés de votre ViewModel ou les ViewModels (qui sont des classes CLR régulières et non des contrôles WPF) peuvent effectuer la communication de manière beaucoup plus propre . Si vous n'êtes pas familier avec MVVM, Lab49 a fait une très bonne vidéo sur le sujet il y a quelques temps et c'est toujours très pertinent: http://blog.lab49.com/archives/2650 http://www.lab49.com/files /videos/Jason%20Dolinger%20MVVM.wmv – Rich
Merci Rich, cela semble très utile et beaucoup plus propre, mais pour ce projet, nous sommes coincés avec l'architecture existante, donc je suis à la recherche d'une solution "bolt-on". –