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 :

[Markups] mettre en majuscule


Sujet :

Windows Presentation Foundation

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut [Markups] mettre en majuscule
    bonjour
    j'aimerais faire un markup qui me permet de mettre en majuscule une dynamicresource
    dans un premier temps j'avais tenté
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
      [MarkupExtensionReturnType(typeof(object))]
        public class DynamicResourceConvertable : DynamicResourceExtension
        {
            public DynamicResourceConvertable() { }
     
            public DynamicResourceConvertable(object resourceKey) : base(resourceKey) { }
     
            public IValueConverter Converter { get; set; } = null;
            public object ConverterParameter { get; set; } = null;
     
            public override object ProvideValue(IServiceProvider provider)
            {
                object value = base.ProvideValue(provider);
                if (value != this && Converter != null)
                {
                    Type targetType = null;
                    var target = (IProvideValueTarget)provider.GetService(typeof(IProvideValueTarget));
                    if (target != null)
                    {
                        DependencyProperty targetDp = target.TargetProperty as DependencyProperty;
                        if (targetDp != null)
                        {
                            targetType = targetDp.PropertyType;
                        }
                    }
                    if (targetType != null)
                        return Converter.Convert(value, targetType, ConverterParameter, CultureInfo.CurrentCulture);
                }
                return value;
            }
        }
    mais etonnament ca passe meme pas dans ProvideValue (et encore ca plante dans le xaml quand on veut mettre un converter)
    donc abandon

    bref je suis passé a quelque chose de plus pragmatique
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <TextBlock DataContext="{DynamicResource TX_CHRONO}"
                                       Text="{wpf:Upper .}"
                                       Foreground="White"
                                       FontSize="{DynamicResource ContentFontSize}"
                                       VerticalAlignment="Center" />
    et
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
       [MarkupExtensionReturnType(typeof(string))]
        public class Upper : MarkupExtension
        {
            public object Path { get; set; }
            public Upper() { }
     
            public Upper(object path) { this.Path = path;  }
     
            public override object ProvideValue(IServiceProvider serviceProvider)
            {
                //var dynamicResourceExtension = new DynamicResourceExtension(ResourceKey);
                //var resource = dynamicResourceExtension.ProvideValue(serviceProvider);
     
                IProvideValueTarget target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
                if (target != null)
                {
                    var _targetObject = target.TargetObject;
                    object o = GetDataContext(_targetObject);
                        var _targetProperty = target.TargetProperty;
                    if (_targetObject != null)
                    {
                        if (_targetProperty is DependencyProperty)
                        {
                            DependencyObject obj = _targetObject as DependencyObject;
                            DependencyProperty prop = _targetProperty as DependencyProperty;
     
                            int xx = 0;
                          //  Action updateAction = () => obj.SetValue(prop, value);
     
                            // Check whether the target object can be accessed from the
                            // current thread, and use Dispatcher.Invoke if it can't
     
                            //if (obj.CheckAccess())
                            //    updateAction();
                            //else
                            //    obj.Dispatcher.Invoke(updateAction);
                        }
                        else // _targetProperty is PropertyInfo
                        {
                            PropertyInfo prop = _targetProperty as PropertyInfo;
                            //prop.SetValue(_targetObject, value, null);
                        }
                    }
     
                    int vv = 0;
                }
     
                return "alpha";
            }
            static object GetDataContext(object target)
            {
                var depObj = target as DependencyObject;
                if (depObj == null)
                    return null;
     
                return depObj.GetValue(FrameworkElement.DataContextProperty)
                    ?? depObj.GetValue(FrameworkContentElement.DataContextProperty);
            }
     
        }
    mais j'arrive pas a reccuperer le data context dans le ProvideValue
    ce que je voudrais faire dans ce cas c'est reccuperer ma chaine et renvoyer juste un Upper de celle ci

    si quelqu'un a une petite idée ....

    merci

    POUR INFO : je suis sur window 7 je ne peux donc pas utiliser le typography
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu dois pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.CharacterCasing = CharacterCasing.Upper;

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    je crois que ca passe pas sur un textblock ....
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    mais j'arrive pas a reccuperer le data context dans le ProvideValue
    ce que je voudrais faire dans ce cas c'est reccuperer ma chaine et renvoyer juste un Upper de celle ci
    Plutôt que de réinventer le binding, pourquoi ne pas utiliser un binding?

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <TextBlock DataContext="{DynamicResource TX_CHRONO}" Text="{Binding Converter=ToUpperConverter}"
                                       Foreground="White"
                                       FontSize="{DynamicResource ContentFontSize}"
                                       VerticalAlignment="Center" />

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    merci ca marche impec j'avais trouvé une solution un peu differente mais dans le meme style
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

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

Discussions similaires

  1. [C#] mettre en majuscule le texte d'un controle textbox
    Par grome dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/10/2011, 00h12
  2. [VBA-E] mettre en majuscule une chaine string en vba
    Par ludo02 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/03/2007, 23h34
  3. [RegEx] Mettre des majuscules au début de chaque mot
    Par Guilhem_mdg dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2007, 10h33
  4. mettre en majuscule avec accent
    Par nicerico dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 08h21
  5. [RegEx] Mettre en majuscules les premières lettres accentuées
    Par Bibicmoi dans le forum Langage
    Réponses: 8
    Dernier message: 15/05/2006, 19h02

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