12
votes

Obtenir la taille actuelle des commandes WPF

J'ai un contrôle d'image dans ma fenêtre. La taille de cette commande d'image est définie sur "Auto". xxx

Lorsque j'essaie d'obtenir un accès, il retourne 0. Comment voir la taille réelle de ce contrôle? Il redimensionne avec la fenêtre.


0 commentaires

3 Réponses :


21
votes

Vous pouvez utiliser .actualheight et .Calistualwidth pour obtenir la hauteur rendu / largeur d'un contrôle < / p>


3 commentaires

@Timurmustafaev Comment essayez-vous d'obtenir les valeurs? À travers le code derrière? À travers une liaison? Et quand essayez-vous d'obtenir les valeurs? Le contrôle doit être rendu avant réelheigh et réelWidth retournera une taille.


J'appelle une nouvelle forme de mon Windowow. Sur ce nouveau formulaire, il existe des contrôles de fiet et l'une d'elles est une image. Après la fenêtre chargée, j'essaie d'obtenir une taille comme celle-ci: _imagecontrol.actualwidth ou _imagecontrol.actualheigh


@Timurmustafaev qui devrait fonctionner à fournir l'image est visible (des objets invisibles n'ont pas de taille de rendu). Testez ces valeurs dans un bouton Cliquez sur l'événement pour vous assurer que les images ont fini de rendu. Un autre ensemble de valeurs que vous pouvez regarder est .Rendersize.height et .Rendersize.width



3
votes

La chose est, le largeur et hauteur Les propriétés vous permettent d'exprimer la taille souhaitée , alors que ce que vous voulez est le rendu Taille - qui peut être accessible (mais non définie) à l'aide de réelWidth et actuelheight propriétés.

Il convient de noter que ceux-ci ne sont pas des valeurs statiques non plus, une fois qu'ils sont définis, ils ne seront pas nécessairement les mêmes pour toujours après, comme il sera réévalué à chaque séquence de rendu ...

Parce que [réelHeight / réelWidth] est une valeur calculée, vous devez savoir que Il pourrait y avoir des modifications multiples ou incrémentielles rapportées en tant que résultat de diverses opérations par le système de mise en page. Le système de mise en page peut calculer l'espace de mesure requis pour les éléments enfants, contraintes par l'élément parent, et ainsi de suite.

Donc, en fonction de vos besoins, vous pouvez envisager de réévaluer vos données à des points appropriés, peut-être lorsque la commande contenant redimensionne, par exemple.


0 commentaires

1
votes

Bien que certains contrôles du WPF remplissent tous les espaces disponibles lorsqu'ils sont aménagés et rendus, les autres ne le font pas. Plus précisément, la commande d'image n'est pas en nature qui établit sa taille seule, c'est-à-dire dans les cas où vous ne spécifiez pas la taille de la commande explicitement avec des attributs de largeur / hauteur ou similaires. .

Mais le contrôle de la grille remplit tous les espaces disponibles lorsqu'il manque d'attributs de taille. Le modèle de page / fenêtre dans Visual Studio a un contrôle de la grille en tant qu'enfant d'un contrôle de la racine de page / de fenêtre et lorsque l'utilisateur commence à mettre des contrôles sur une page dans un éditeur graphique, les commandes ajoutées par l'utilisateur deviennent d'abord enfants de cette grille. Contrôle.

Si vous avez utilisé le modèle VS, et votre contrôle d'image est un enfant de ladite commande de grille, nommez votre grille avec un attribut X: NAME, et vous pouvez utiliser les propriétés réelWidth / Hauteur de la grille pour vos besoins dans un code -fehind, car le contrôle de l'image augmente jusqu'à sa taille de la grille de parent - à condition que vous ne spécifiez pas sa taille explicitement ou non, c'est-à-dire régler le contenu de l'image.

Au fait, le comportement de dimensionnement des commandes intégrées peut être modifié. Vous pouvez modifier un contrôle et remplacer les propriétés de dépendance correspondantes. Voir, par exemple, https://stackoverflow.com/a/6094993 .


0 commentaires