Accueil > Time Design , Silverlight > Personnaliser Silverlight Controls Toolkit: Expander

Personnaliser des contrôles Silverlight Toolkit: Expander

Introduction

C'est le deuxième poste de la série Personnaliser Silverlight Toolkit contrôles. Ce post montre comment personnaliser Expander, et fournit la plupart des personnalisations demandé de Silverlight Toolkit forum .

Expander Customisation

Pour personnaliser Expander, il est très important de comprendre son API et le modèle par défaut, et de savoir comment utiliser Mélange de nouveau modèle, un contrôle. Je vous recommandons fortement de lire mon précédent post Expander contrôle dans Silverlight Toolkit , si vous n'avez pas encore. La clé pour personnaliser Expander:

  • comprendre l'interface d'extension, en particulier de son contrat de commande:
    • Expander attend un composant de modèle, un bouton à bascule nommé "ExpanderButton", dans son modèle. Son expansion / fonction effondrement dépend de l'existence de ce modèle part, parce que Silverlight ne prend pas en charge les deux sens contraignant.
    • Expander expose groupe ExpansionStates état visuel (y compris élargi et s'est effondré deux états visuels) pour les utilisateurs de personnaliser son développement et de réduction des comportements.
    • Expander expose groupe ExpandDirectionStates état visuel (y compris ExpandDown, ExpandUp, ExpandLeft, ExpandRight) pour les utilisateurs de personnaliser la présentation de chacun des quatre élargir direction.
    • Expander expose également HeaderTemplate et les propriétés ContentTemplate aux utilisateurs de personnaliser son en-tête et une partie du contenu. Vous pouvez trouver ce genre de personnalisation à partir de Silverlight Control Toolkit échantillon .

image

  • comprendre par défaut d'extension du modèle. La capture d'écran ci-dessous montre comment le modèle par défaut gère la mise en page des quatre directions d'élargir et le comportement des expand / collapse en fournissant Storyboard pour le ExpansionStates et ExpandDirectionStates groupes état visuel:
    • L'ensemble est un en-tête basé sur un modèle ToggleButton, donc un clic sur l'en-tête de toute façon peut ouvrir / fermer la zone de contenu.
    • Il utilise une grille de 2 × 2 de mise en page en-tête et zone de contenu.
    • Il énonce les Expander selon ExpandDirection en faisant état d'animation pour ExpandDirectionStates:
      • Il énonce en-tête et les zones de contenu en animant leur Grid.Row et les propriétés Grid.Column.
      • Il s'appuie sur le bouton à bascule en-tête correctement en changeant son modèle.
    • Il étend / effondrements des zones de contenu en animant son attribut de visibilité dans les transitions d'état ExpanionStates.

animation État ExpandDirection

capture d'écran ci-dessous montre les personnalisations les plus demandés. Si vous avez Silverlight 2.0 installé et votre lecteur prend en charge l'application Silverlight en direct, vous pouvez jouer avec lui ici aussi:

Expander Customisation

  • PDC08 montre les Expander dans la version actuelle sur CodePlex. Il ya un bogue dans ExpanderRightHeaderTemplate (utilisée si vous définissez ExpandDirection à droite) qui provoque des CPU haut et utilisation de la mémoire. Ceci est corrigé et le correctif sera dans notre prochaine version dans quelques semaines. Je m'excuse pour la gêne occasionnée. Expander est mon tout premier contrôle Silverlight. Je ne savais pas quoi que ce soit sur Silverlight ou WPF avant de rejoindre l'équipe de Shawn il ya quelques mois, et je ne peux toujours pas croire à quel point fragile XAML et l'animation sont. Il m'a fallu beaucoup de temps pour traquer le caractère One Fix: un (des dizaines) a ObjectAnimationKeyFrames Durée attribut accidentellement réglé sur "1" au lieu de "0". C'est cela qui explique Silverlight noix d'exécution et de porcs cpu / mémoire.
  • Nouvelle (ExpanderStyle) présente le modèle à être publiée prochainement.
  • Fade In / Out (ExpanderFadeStyle) personnalise l'expand / collapse comportement en animant l'opacité à s'estomper dans le contenu et à la sortie.
  • Échelle In / Out (ExpanderScaleStyle) personnalise l'expand / collapse comportement en animant ScaleTransform.ScaleX et ScaleTransform.ScaleY entre 1 et 0 pour agrandir et rétrécir le contenu.
  • Aucun bouton (ExpanderNoButtonStyle) personnalise la mise en page en enlevant le cercle avec bouton à bascule flèche. Vous pouvez toujours afficher / masquer le contenu avec la souris ou le clavier.
  • Bas / Droite (ExpanderBottomRightButtonStyle) personnalise la mise en page en mettant le cercle avec une flèche du bouton à bascule vers le bas / partie droite de l'en-tête.

Source Code

Vous pouvez trouver le projet fichier zippé:


Conclusion

Expander a été le mot-dessus sur mon blog. Il s'agit d'un contrôle très utile et relativement difficile à personnaliser. Espérons que ce post va vous aider dans l'utilisation et la personnalisation Expander. Merci!

Share and Enjoy:

  • Print
  • email
  • RSS
  • Twitter
  • TwitThis
  • del.icio.us
  • LinkedIn
  • Technorati
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • QQ书签
  1. Anonyme
    Septembre 9th, 2009 à 10:33 | # 1

    Ning Salut,

    Est-il possible de remplacer l'icône du bouton Expander avec autre chose. Avez-vous un exemple à cet égard. L'aide est très appréciée.

    Cordialement,
    Sanket

  2. Anonyme
    Décembre 31, 2008 à 16:37 | # 2

    Merci pour cette grande maîtrise, mais je suggère de modifier le texte suivant:

    Si on mettait l'agrandir direction "ExpandRight" et le contenu est réduit, la flèche du bouton à bascule points à gauche direction. C'est un peu méchant. Je propose de fixer le contrôle en laissant la flèche du bouton à bascule de pointage par défaut pour la bonne direction lorsque le contenu est effondré en ExpandRight étatiques.

    Lorsque le contenu est effondré ce comportement serait mieux pour l'utilisateur, car alors la flèche du bouton à bascule de points à cette direction où le contenu apparaît.

    Avec mes meilleurs salutations électroniques LawBot
    (Hambourg, Allemagne)

  3. Anonyme
    Décembre 12, 2008 à 09:56 | # 3

    La hauteur de l'en-tête d'extension a été modifiée dans la version Décembre. Comment puis-je le changer - je ne trouve pas de propriété Height sur HeaderedContentControl.Header?

  4. Anonyme
    Décembre 1st, 2008 à 10:34 | # 4

    Avez-vous des exemples d'animation dans le menu déroulant de l'extension? J'ai besoin d'une extension de l'commence comme non expansées, puis se développe progressivement sur toute la hauteur de l'ContentControl. Le Fade In / Out et échelle In / Out sont bonnes, mais elles nécessitent l'extension de commencer à pleine hauteur.

  5. Anonyme
    Novembre 27, 2008 à 00:00 | # 5

    Ning Salut,

    Merci pour cette mise à jour. J'espérais trouver un échantillon avec le bouton "" sur la droite, ce qui semble faire le travail.

    Merci,
    Hirondelle

  1. Pas encore de trackbacks.