7
votes

Comment faire référence au formulaire parent de la commande WPF

J'utilise Elementhost pour héberger la commande utilisateur WPF dans un formulaire Windows. Je veux savoir comment référencer la forme parent dans le contrôle WPF.


0 commentaires

3 Réponses :


3
votes

Pourquoi ne pas créer cette relation par programme? I.e. Lorsque vous ajoutez votre commande d'utilisateur WPF dans un élément d'élément, définissez la propriété Tag de la commande utilisateur sur l'instance d'hôte de l'élément.

Colin E.


1 commentaires

Merci de me pointer dans la bonne direction! Après avoir lu toutes ces suggestions sur la manière d'utiliser des commandes ou des événements pour gérer quelque chose qui devrait être si simple, j'ai fini par mettre une variable nulle de ma forme parent dans l'UserControl et la définir à Null. Chaque fois que je crée une instance de l'UserControl, j'ai défini la variable à la fenêtre Création. Simple!



17
votes

Voici un moyen de le faire, à partir d'un document WPF UserControl qui a un bouton contient un bouton: xxx

(dans ce code formulaires est un alias pour system.windows.forms )


1 commentaires

Fonctionne un traitement merci. Je vérifiais cependant que NULLS.



2
votes

Je vous suggère

  • Expose un événement à partir de WPF Child Control ,
  • Inscrivez-vous à cet événement de parent lors de sa création,
  • soulevez cet événement chaque fois que vous voulez des données de la commande enfant,
  • Faites des données de retour de contrôle parent en définissant des valeurs dans la personnalisation eventargs objet.

    L'accès à un contrôle parent doit être évité à moins que certains scénarios spéciaux. Propagez toujours des événements au conteneur parent des enfants lorsque vous souhaitez configurer la communication de l'enfant au parent.


2 commentaires

Pourriez-vous donner une raison plus détaillée pourquoi ne pas "accéder à un contrôle parent doit être évitée sauf si des scénarios spéciaux"


Cela semble très prometteur, pourriez-vous me donner un lien ou simplement exemple de ce que vous entendez en exposant un événement (je pense que vous voulez dire un gestionnaire d'événements personnalisé?) Et l'enregistrer avec le parent? Donc, je suppose que cela signifie que vous enregistrez l'événement lors de la phase initiale?