Empêchez une zone de texte en lecture seule d'être grisée dans Silverlight
Dans Silverlight, Comment puis-je faire une zone de texte avec IsReadOnly="True"
pas devenir grisé. Le gris effet semble horrible avec mon application, et je voudrais désactiver, ou de changer son apparence/couleur.
source d'informationauteur Struan
Vous devez vous connecter pour publier un commentaire.
Rien ne semble fonctionner dans le code xaml (comme d'habitude), donc la meilleure solution que j'ai trouvé c'est de faire une zone de texte en lecture seule moi-même, sans la propriété IsReadOnly.
Si vous voulez juste l'équivalent d'un bloc de texte en HTML, qui peuvent être sélectionnés (qui, pour quelque raison même de Silverlight 4 est manquante) vous pouvez raccourcir Graeme réponse légèrement:
Vous pouvez même être en mesure de retirer le désactivé.
Voici une version améliorée de @Struan de réponse.
Je suppose que vous voulez autoriser
Select all
etCopy
si vous êtes désireux d'une zone de texte en lecture seule. Vous devez gérer des combinaisons de touches telles queCtrl+A
etCtrl+C
.Avertissement: ce n'est pas entièrement un jeu complet de clés - vous pouvez avoir besoin d'ajouter plus, mais cela permettra de copier au moins.
Et voici un Style simple, je suis l'aide de qui indique à l'utilisateur que l'élément est sélectionnable, mais est plus petit qu'une zone de texte.
J'ai trouvé @Simon_Weaver la solution la plus simple à mettre en œuvre. Le seul changement que j'ai fait était de vérifier pour la Clé.Onglet avec gauche/droite/haut/bas pour que je puisse onglet en dehors du terrain. J'ai créé la classe ReadOnlyTextBox et copié le code ci-dessus. Ensuite, j'ai ajouté la vérification de la Clé.Onglet et compilé. Ensuite, j'ai changé mon code Xaml de la balise de
à
(retrait de la IsEnabled de référence et l'ajout de la couleur d'arrière-plan). Il ressemble et fonctionne exactement comme je m'y attendais.
Merci Simon.
Je voulais réduire le style à nu de l'os, et testé avec silverlight 4.0:
C'est presque de la triche, comme de dire:
Hey silverligh, this textbox is a textblock!
Vous devriez éventuellement ajouter quelque chose dans le TextBlock balise, afin de mieux refléter d'autres propriétés de zone de texte.
Jusqu'à ce que la définition/comportement/de l'apparition d'un bouton de changements, une autre solution plus élégante est de simplement changer votre zone de texte à un Bouton. Changer le "Texte" de la propriété à une propriété 'Content' pour définir le texte s'affiche, retirez la IsReadOnly paramètre et vous aurez l'effet que vous désirez, je crois (un texte plat-forme de boîte de contrôle qui prend en charge le texte et la frontière, au fond, au premier plan, les propriétés d'une zone de texte sans l'opacité du changement [grisonnant-out] et les tracas de la définition d'un nouveau style).
Lorsqu'un utilisateur tente d'interagir avec ce contrôle, c'est les fonctionnalités du changement sur l'événement click, mais sans un gestionnaire d'événement associé au bouton, il n'y aura pas d'impact sur votre interface. En fait, je pense que par défaut le comportement de la touche fait apparaître l'effet d'une sorte de "cool".