IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

WPF actualHeight vs Height


Sujet :

Windows Presentation Foundation

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 7
    Points
    7
    Par défaut WPF actualHeight vs Height
    Bonjour,
    J'adapte un ancien code sous VBnet winforms vers VBNET WPF, or impossible de placer le label2 sous le label1,
    je n arrive absolument pas a obtenir la hauteur du premier label pour placer le 2 eme au dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    dim u as integer
    Dim lbl1 As New Label()
    lbl1.Margin = New Thickness(x, y, 0, 0)
    lbl1.Content = "ma phrase1"
    lbl1.Width = Double.NaN         (si la taille est fixe ex:20 cela  fonctionne)
    lbl1.Height = Double.NaN
    Mygrid.Children.Add(lbl1)
     
    u = Convert.ToInt32(lbl1.ActualHeight)
    Dim lbl2 As New Label()
    lbl2.Margin = New Thickness(x, y+u, 0, 0)
    lbl2.Content = "ma phrase2"
    lbl2.Width = Double.NaN         
    lbl2.Height = Double.NaN
    Mygrid.Children.Add(lbl2)
    Certainement les tailles ne sont pas encore définies par le systeme de rendu ?
    Je n'ai toujours pas saisi le principe d affichage du WPF
    En vous remerciant

  2. #2
    Invité
    Invité(e)
    Par défaut
    Visual Studio n'aime pas trop lorsque qu'on met une addition en argument.
    Fais plutôt quelque chose dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim u as Integer = Convert.ToInt32(lbl1.ActualHeight)
    Dim yNext As Integer = (u + y)
    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lbl2.Margin = New Thickness(x, yNext, 0, 0)
    Je ne suis absolument pas sur de ce que je dis, mais d'après ce que je vois ton code est bon. Ya absolument rien a dire la dessus.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 122
    Points : 167
    Points
    167
    Par défaut
    As-tu essayé en faisant un cast de ta somme ? :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    lbl2.Margin = New Thickness(x, (double)(y+u), 0, 0)

  4. #4
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Porter le code en WPF de cette façon n'a IMHO aucun intérêt si l'appli WebForms fonctionne correctement.

    Le principal atout de WPF est XAML, et un port procédural n'en tire pas vraiment partie. :/

    De plus, autant le layout en absolu est une pratique très répandue en WinForms (THE pratique même ), autant c'est vraiment dommage en WPF qui met à disposition un ensemble de composants dédiés à la mise en page dynamique.

    Dans ton cas un StackPanel me semble tout indiqué.
    Essaye avec quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim lbl1 As New Label()
    lbl1.Margin = New Thickness(x, y, 0, 0)
    lbl1.Content = "ma phrase1"
     
    Dim lbl2 As New Label()
    lbl2.Margin = New Thickness(x, y, 0, 0)
    lbl2.Content = "ma phrase2"
     
    Dim labelsLayout As New StackPanel
    labelsLayout.Children.Add(lbl1)
    labelsLayout.Children.Add(lbl2)
     
    Mygrid.Children.Add(labelsLayout)
    Si tu as un peu de temps essaye de refaire un petit form en XAML pour commencer en douceur puis fait le avec des forms plus ambitieux.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

Discussions similaires

  1. Connaitre la height d'une div
    Par licorne dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/09/2005, 16h30
  2. [W3C] height="100%" différent de style="height:100%
    Par Oluha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/08/2005, 17h14
  3. [HTML] Height à 100% sur Img sous IE
    Par lord_paco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/08/2005, 11h04
  4. [CSS] Bug IE avec height ne marche pas avec les %
    Par El Riiico dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/06/2005, 17h11
  5. height: encore plus que 100%
    Par Anduriel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/06/2005, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo