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 :

[Débutant] Du text dans un usercontrol


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut [Débutant] Du text dans un usercontrol
    Bonjour,

    <HS>
    J'ai mis débutant dans le titre, mais seulement en WPF, sinon je développe depuis plus de 20 ans !
    Mais j'ai vraiment beaucoup de mal avec le WPF
    </HS>

    Je veux créer un usercontrol qui sera affiché dans un ElementHost dans un programme Winform (WPF quasi obligatoire car il doit s'afficher au dessus d'une video lu par la libvlc).

    J'ai deja fait un bô usercontrol pour le volume en m'inspirant du Circular Progress Bar de http://yourcontrols.codeplex.com/.Je pensait avoir fait le plus dur...

    Le usercontrol que je veux créer doit contenir le un numero d'ordre et un "titre".
    L'ElementHost le contenant est positionné et taillé par le programme principal selon la taille du panel contenant la vidéo. Le usercontrol rempli l'ElementHost.(pas de problème).

    Je veux que le texte prennent toute la hauteur du control et que si texte dépasse la largeur du control, trois petit point soient affichés.

    Bah... je n'y arrive pas J'ai essayé un TextBox dans un ViewBox, de jouer avec les hauteurs, les largeurs, les modes de remplissage, de transformations. J'ai les trois petit points, mais la fonte ne rempli pas en hauteur, ou bien la fonte est étiré . La fonte n'est pas déformé et la hauteur est bonne mais je n'ai pas les trois petit points, etc...
    J'ai essayé avec un FormattedText en calculant la fonte maxi puis en calculant la longueur maxi, j'ai arrété avant que ça marche car vraiment trop crade comme code (un boucle pour calculer la taille optimal de la fonte et une boucle pour calculer la longueur optimal).

    Je teste et je googueuele depuis cinq jours pour aucun resultat correct
    Il doit bien avoir un solution simple !

    Il y aurait-il une ame charitable pour m'aider ?

    NB : le programme est VB.NET, mais on peut parler C# si vous voulez.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Par défaut
    Je pense qu'il faut jouer avec les transformations (render transform) depuis les événements resize du contrôle parent.

    Identifier la taille dispo.
    Identifier la taille "normale" du texte (sans transfo).
    Calculer le facteur d'échelle, définir la transformation et l'affecter à la grid (cf. ci-après).

    Si le facteur d'échelle amène (ou est sensé amener) la largeur du texte au delà de la zone d'affichage, utiliser le "...".

    Pour ça créer une grid avec deux colonnes (Width="Auto") : première colonne un label avec le texte, seconde colonne un label avec les "...".

    Si le texte rentre : enlever le label avec les "..."
    Sinon : l'ajouter ou le laisser en place.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 33
    Par défaut
    Le TextBlock gère trés bien les trois petits points si le texte est trop long, avec un choix de 3 styles de coupure différents

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Tu as la propriété TextTrimming="CharacterEllipsis" (voir WordEllipsis suivant ta préférence/besoin) sur le TextBlock qui te permet de gérer les '...' :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBlock Text="Texte plus long que la taille du TextBlock." TextTrimming="CharacterEllipsis" Width="100" />

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Oui, mais non...le textblock gère très bien l'élision, mais si tu le mets dans un viewbox, l'élision est soit non visible, soit visible mais alors le texte ne rempli pas la hauteur du usercontrol ou bien le texte est déformé.

    Je vais essayé un solution proche de celle proposé par Alikendarfen. Je vais mettre tout en fixe au départ (pas de stretch, pas de fill,...), calculer le ratio de hauteur (fixe et celui demandé), faire un scale uniforme avec ce ratio, tester si le texte dépasse la largeur et afficher si besoin les "...". Je vais tester avec un grid comme il me le conseille.

    Il suffit de pas grand chose pour débloquer un situation (ou un "vieux" cerveau) donc un grand merci à Alikendarfen

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Recherche texte dans les sources d'un projet
    Par oasis+ dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 23/07/2007, 14h19
  2. [Débutant] Utilisation d'une valeur de la zone de texte dans une requête
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 13/07/2006, 10h42
  3. Réponses: 32
    Dernier message: 17/05/2006, 16h03
  4. Réponses: 8
    Dernier message: 09/02/2006, 20h43
  5. [Débutant]Changer du text dans un tableau
    Par Azimel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/09/2005, 18h38

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