none
saisie d'un entier en format hexadécimal RRS feed

  • Discussion générale

  • Bonjour,

    Je fais un projet suivant le modèle MVVM. Dans la partie XAML, j'ai un TextBlock sur lequel j'ai fait un binding sur un élément qui est de type int

    <TextBoxText="{Bindingentier,Mode=TwoWay,StringFormat={}{0:X8},Converter={StaticResourceTextToIntConverter}}"/>

    Le problème que j'ai est que si je saisis un entier en format entier, tout fonctionne, par contre, si je saisis en format hexadécimal (par exemple FF000000), cela ne fonctionne pas et cela ne rentre pas dans le converter (d'ailleurs, je ne sais pas si le converter est vraiment utile).

    Ma question est donc : comment faire que mon TextBlock reconnaisse un entier en format hexadécimal ?

    Merci pour vos réponses

    jeudi 1 décembre 2016 15:33

Toutes les réponses

  • Bonjour,

    Pour ce faire, lorsque vous récupérez la valeur de votre converter, convertissez là en string et faite une vérification via une regex.

    Voilà ce que je veux dire par là (code à mettre dans votre Converter) : 

                int number;
                bool IsInt = Int32.TryParse(value.ToString(), out number);
                if (!IsInt && System.Text.RegularExpressions.Regex.IsMatch(value, @"\A\b[0-9a-fA-F]+\b\Z"))
                {
                    //My code
                }

    Ai-je bien répondu à votre question? Si c'est le cas, veuillez marquer cette réponse comme étant la "réponse" à votre post. 


    SVP utiliser le Marquer comme reponse; sur les reponses qui vous aide car cela permet aux personnes qui peuvent rencontrer le meme probleme que vous, de retrouver rapidement quelle est la reponse qui a resolu leur probleme. De plus, cela encourage aussi la personne qui a repondu a votre question, et de repondre aux suivantes...

    vendredi 2 décembre 2016 09:26
  • Pas sur comment faire pour XAML mais un xml pattern similaire à ce qui a été proposé serait:

    <xs:simpleType name="U32BitHexInt">
      <xs:union memberTypes="xs:unsignedInt">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:pattern value="0x[0-9A-Fa-f]{8}"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:union>
    </xs:simpleType>
    Si votre projet est XAML vous pouvez regarder ce thread: http://stackoverflow.com/questions/1268552/how-do-i-get-a-textbox-to-only-accept-numeric-input-in-wpf

    vendredi 2 décembre 2016 12:41