Trouver l'emplacement d'un contrôle wpf utilisant PointToScreen
J'essaie de trouver un membre de ma famille coordonner pour un usercontrol à l'intérieur de mon mainwindow. J'ai essayé d'utiliser le "Contrôle.PointToScreen()" la méthode mais avec pas de chance. Chaque fois que je fais ce que j'obtiens une exception qui dit:
Système.InvalidOperationException: Ce Visuel n'est pas connecté à un PresentationSource
Je pense que cela a quelque chose à faire avec moi appel pointToScreen avant les visuels ont rendu correctement, étant donné que je suis déjà à l'appel de la méthode dans mon Secteur Constructeur.
De toute façon, j'aimerais savoir si quelqu'un d'entre vous a une astuce/Solution/Idée de comment je pourrais peut-être contourner ce problème.
Juste pour clearify ce que je suis en train de faire, mon contrôle contient une photocontrol qui j'ai besoin de l'emplacement exact à l'intérieur de mon maincontrol, depuis que je veux utiliser ces coordonnées pour créer un double de la commande, sur le sommet de
Expérimenter avec PointToScreen.
TranslatePoint
à la place. Et vous pouvez avoir besoin d'appeler ce après que la fenêtre a été chargé. Il y a un Loaded
pour cette fin.OriginalL'auteur Max Mazur | 2014-07-17
Vous devez vous connecter pour publier un commentaire.
Dans votre code vous inscrire pour l'événement Chargé de l'objet UserControl.
Qui devrait corriger le bug que les visuels n'ont pas été rendus encore lorsque vous essayez d'obtenir le poste.
Modifier
Puisque vous voulez que la position de votre commande par rapport à la fenêtre de votre, mieux essayer celui-là .
Content d'avoir pu vous aider 🙂
Bien malheureusement, il n'a pas aider avec le problème sous-jacent. Il continue de me donner la même exception. Je ne sais pas exactement pourquoi je me fais des erreurs, parce que je sens que je fais la même chose que votre premier exemple :/
Comme : De La Console.WriteLine(YourControl.PointToScreen(new Point(0,0)); CELA FONCTIONNE de la Console.WriteLine(YourControl.GetChildControl().PointToScreen(new Point(0,0)); CE N'est pas
Ainsi, vous obtenez le "Visuel n'est pas connecté à un PresentationSource" erreur à nouveau? Vous vous êtes inscrit pour l'événement Chargé du les contrôles imbriqués?
OriginalL'auteur sebhaub
Depuis Soutiennent rendu n'a pas fonctionné, j'ai trouvé une solution pour mon problème.
De cette façon, ça tire dans le LoadedEvent, mais attend pour que le contenu soit rendu, et puis, finalement, il vous donne vos coordonnées en arrière et met à votre contrôle
Je vois, Apparemment un contrôle utilisateur ne dispose pas de cette méthode, et ma demande est partie d'un système plus vaste, de sorte qu'il n'est pas à base de fenêtres 🙂 Mais merci quand même pour votre aide, vous m'a orienté dans la bonne direction.
OriginalL'auteur Max Mazur
La solution de Max Mazur est de travailler pour moi:
OriginalL'auteur volta