Comment faire pour supprimer ButtonChrome frontière (lors de la définition du modèle de frontière)?
J'ai suivi ChrisF
ici et écrire un simple démo.
...ouvrez votre projet dans Expression Blend,
sélectionnez le bouton puis cliquez-droit sur
et sélectionnez "Modifier le Modèle > Modifier un
Copie..". Cette copie de l'existant
modèle en un seul vous pouvez modifier. C'est
plus facile si vous créez une ressource de
dictionnaire.
Et je peux voir le derrière de l'écran-le modèle de bouton comme ci-dessous la capture d'écran (Le ButtonChrome dans les Ressources).
Je veux enlever le blanc-gradient de la frontière de la ButtonChrome ET garder tout le reste de la bouton de l'INTERFACE utilisateur de rester en l'état. Comment puis-je le faire?
ps. Pour rendre le problème simple-je utiliser le ButtonChrome comme un contrôle normal sur mon point de vue. Je navigue dans les propriétés, mais encore obtenu AUCUNE idée de la façon de supprimer le "blanc" de la frontière.
(Le ButtonChrome)
(Le ButtonChrome dans les Ressources)
OriginalL'auteur Nam G VU | 2010-12-29
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas qu'il ya un moyen facile de se débarrasser de la Bordure Blanche. La routine est DrawInnerBorder et de son nom de dans OnRender dans ButtonChrome.
Comme nous pouvons le voir, il n'y a pas de propriété pour désactiver cette option.
Vous pouvez le vérifier en paramètre
IsEnabled="False"
etRoundCorners="False"
sur le ButtonChrome ou par réglage de la Largeur ou de la Hauteur de quelque chose comme 3.99 et le "cadre Blanc" s'en va.Mise à jour
Pour désactiver l'intérieur des frontières de ButtonChrome vous pouvez créer votre propre ButtonChrome qui ajoute cette propriété. Malheureusement ButtonChrome est scellé de façon on ne peut pas hériter d'elle. J'ai essayé de copier l'ensemble de la classe et de l'ajout de la Propriété DisableInnerBorder et il semble fonctionner. Vous pouvez l'utiliser comme cette
Autre que celui qu'il fonctionne exactement comme la régulière ButtonChrome et vous pouvez également ajouter d'autres Propriétés, etc. que vous pourriez vouloir. Il peut y avoir des inconvénients à cette méthode que je n'ai pas pensé, mais pour un petit test, il a très bien fonctionné.
Apperently 937 lignes de code a trop de post sur 🙂 j'ai téléchargé MyButtonChrome.cs: http://www.mediafire.com/?wnra4qj4qt07wn6
Gi VU: j'ai utilisé .NET Réflecteur et ajouté le PresentationFramework.Aero assemblée de débogage. Ensuite, j'ai juste fait par le biais du dessin routines pour savoir où cela a été établi et vérifié si il y avait moyen de le désactiver 🙂
Merci Meleak! Concernant votre suggestion pour l'utilisation
Border
au lieu deButtonChrome
, je vais perdre tous les UI-effet d'un bouton normal (survol de la souris, pressé, ect.) Vous disposez de tous les travaux autour de qui?Gi VU: mise à Jour de ma réponse. Il peut y avoir certains inconvénients à ce que je n'ai pas pensé, mais il semble fonctionner.
Magnifique travail!!! Vos suggestions sont les meilleurs et de TRAVAIL parmi d'autres. L'espoir aucun inconvénients existent. Je pense que tu veux dire
DisableInnerBorder="True"
au lieu deDisableInnerBorder="False"
OriginalL'auteur Fredrik Hedblad
L'un des grands fetatures de WPF est la capacité à exploiter le comportement d'un contrôle, tout en restant dans l'échange le look de ce contrôle.Vous pouvez simplement supprimer le chrome complètement et de se créer une apparence personnalisée qui correspond à vos besoins.
Échantillon
Effectuer cette vérification
http://www.designerwpf.com/2008/03/27/wpf-designers-guide-to-styles-and-templates/
Ce lien semble fonctionner maintenant:
http://www.designersilverlight.com/2008/03/27/wpf-designers-guide-to-styles-and-templates/
OriginalL'auteur biju
Vous ne devriez pas essayer de personnaliser ButtonChrome. *Chrome classes sont spécifiques à ce thème, c'est à dire qu'ils contiennent mise en œuvre d'un thème windows et vous ne pouvez pas le remplacer. Regardez la déclaration de la "Microsoft_Windows_Themes" espace de noms dans votre dictionnaire de ressources - il contient probablement quelque chose comme PresentationFramework.Aero...
Ce que vous devez faire dans vos modèles personnalisés est l'utilisation habituelle de la Frontière au lieu de ButtonChrome et de définir les mécanismes qui vont changer son fond, etc. lorsque le bouton est enfoncé ou planait.
Voici un exemple:
OriginalL'auteur Pavlo Glazkov
Je me rends compte que c'est un vieux thread, mais je l'ai trouvé quand j'ai essayé de faire la même chose et n'ai pas trouvé d'excellentes solutions. Je pensais que je poste ce que j'ai trouvé dans le cas où il aide à quelqu'un d'autre.
Ce que je voulais, c'était plat boutons qui ont utilisé la normale chrome quand on passe la souris dessus. La meilleure façon que j'ai pu trouver pour faire ceci est de tricher et d'utiliser deux ContentPresenters à l'intérieur d'une Grille avec deux lignes. Un contenu présentateur est à l'intérieur de la normale ButtonChrome et on est à l'intérieur d'une Frontière. Une seule ligne de la grille est affichée à un moment et le setter dans le IsMouseOver de déclenchement détermine qui est affichée.
OriginalL'auteur Josh T
si vous voulez juste éviter le WhiteBorder vous avez juste à changer le BorderBrush=Transparent
Si vous souhaitez modifier quelques autres choses que vous devez créer votre propre ControlTemplate
merci de ce lien
http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html
ici, ils ont différentes bouton modèles
OriginalL'auteur Kishore Kumar
Asfter discuter avec Meleak pendant un certain temps, j'ai finalement trouvé la solution finale pour ma question! Merci Meleak!
Vous pouvez télécharger le solution codes source ici.
OriginalL'auteur Nam G VU
Une option est d'utiliser une autre bibliothèque comme telerik ou xceed (également disponible gratuitement commerciale-utilisation). Dans ma solution, j'ai créé une classe d'un dérivé de Xceed.Wpf.Boîte à outils.Les Chromes.ButtonChrome (Microsoft ButtonChrome est scellé).
Dans mon ResourceDictionary j'ai mis en place un style de zone de liste déroulante, créé par le Mélange de VS.
Dans le ControlTemplate pour le ToggleButton, j'ai implémenté code suivant:
Ici, vous pouvez voir que la plupart des impertand stuf. Votre DownArrowGeometry et ainsi de suite, vous savez faire.
J'espère que cela peut aider quelqu'un 😉
OriginalL'auteur peter70