2011-06-06 8 views
18

Je souhaite agrandir la case dans WPF.Changer la taille de la case à cocher WPF

J'ai découvert que je dois faire un modèle de contrôle, dont un exemple se trouve ici: http://msdn.microsoft.com/en-us/library/ms752319.aspx

Si j'utilise ce code la case à cocher ne ressemble pas à l'apparence par défaut. Tout ce que je veux faire est de changer la largeur de la bordure & Hauteur des attributs.

J'ai besoin d'un modèle de contrôle qui ressemble exactement à la configuration par défaut, à partir de là, je vais juste changer la largeur et la hauteur. Est-ce que quelqu'un sait où je peux en trouver un? Ou une meilleure approche?

Répondre

49

Que pensez-vous de cela?

<CheckBox> 
    <CheckBox.LayoutTransform> 
     <ScaleTransform ScaleX="2" ScaleY="2" /> 
    </CheckBox.LayoutTransform> 
</CheckBox> 

Vous pouvez utiliser des valeurs doubles pour ScaleX et ScaleY si les valeurs entières ne correspondent pas exactement à ce que vous souhaitez.

+2

Solution élégante. Je l'ai appliqué comme un style global. Pour ceux qui empruntent cette route, notez qu'elle met même à l'échelle le contenu (texte à côté de checkbox ou autre) aussi. –

+0

c'est génialement simple! – jbmeta

+0

Vous pouvez placer le texte dans un TextBlock séparé dans un StackPanel avec le CheckBox si vous ne voulez pas que la police double aussi. Le problème pour le moment est que vous pouvez contrôler la taille de la police, mais la taille de la boîte ne change pas. Il devrait vraiment évoluer par défaut à mon avis. Vous obtenez une incompatibilité étrange par défaut. –

0

Vous pouvez utiliser l'arborescence visuelle de la case à cocher et lorsque les éléments souhaités existent, modifiez-les au moment de l'exécution en définissant explicitement la largeur et la hauteur. Utilisez snoop de Peter Blois ou un équivalent pour voir s'il y a des éléments nommés auxquels vous pouvez accéder avec FindName; Sinon, vous devrez deviner (par exemple, certains styles peuvent avoir deux éléments Border et vous devez en choisir un) et marcher explicitement dans l'arborescence visuelle. Gardez à l'esprit que votre code ne devrait rien faire si vous ne trouvez pas les éléments que vous recherchez.

3

Les ControlTemplates par défaut peuvent être trouvés on MSDN (voir Default WPF Themes lien).

Assurez-vous d'ajouter l'espace de nom de thèmes respectif à votre fichier xaml pour référencer le theme controls nécessaire.

<theme:BulletChrome Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        RenderMouseOver="{TemplateBinding IsMouseOver}" 
        RenderPressed="{TemplateBinding IsPressed}" 
        IsChecked="{TemplateBinding IsChecked}"/> 

Je ne sais pas si vous pouvez le spécifier génériquement, vous pourriez avoir besoin d'ajouter des références aussi.

Le problème ici est que vous ne pouvez pas vraiment spécifier une taille de bordure puisque le contrôle l'encapsule.

Questions connexes