Nous créons une application XBAP dont nous avons besoin pour avoir des coins arrondis à différents endroits sur une seule page et nous aimerions avoir un conteneur WPF Rounded Corner pour y placer un tas d'autres éléments. Quelqu'un a-t-il des suggestions ou des exemples de code sur la meilleure façon d'accomplir cela? Soit avec des styles sur un ou avec la création d'un contrôle personnalisé?
wpf
rounded-corners
FarrEver
la source
la source
Réponses:
Vous n'avez pas besoin d'un contrôle personnalisé, placez simplement votre conteneur dans un élément de bordure:
Vous pouvez remplacer le
<Grid/>
par l'un des conteneurs de disposition ...la source
<Border BorderBrush="Black" BorderThickness="1" CornerRadius="8">
est un remplacement approprié pour cela, un peu plus succintJe sais que ce n'est pas une réponse à la question initiale ... mais vous voulez souvent couper le contenu intérieur de cette bordure de coin arrondie que vous venez de créer.
Chris Cavanagh a trouvé un excellent moyen de faire exactement cela.
J'ai essayé plusieurs approches différentes à ce sujet ... et je pense que celle-ci est géniale.
Voici le xaml ci-dessous:
la source
Je devais juste le faire moi-même, alors j'ai pensé que je publierais une autre réponse ici.
Voici une autre façon de créer une bordure d'angle arrondie et de découper son contenu interne . C'est la méthode la plus simple en utilisant la propriété Clip. C'est bien si vous voulez éviter un VisualBrush.
Le xaml:
Le code du convertisseur:
la source
Implémentation basée sur le code VB.Net de la solution de contrôle aux frontières de kobusb. Je l'ai utilisé pour remplir une ListBox de contrôles Button. Les contrôles Button sont créés à partir des extensions MEF. Chaque extension utilise l'attribut ExportMetaData de MEF pour une description de l'extension. Les extensions sont des objets graphiques VisiFire. L'utilisateur appuie sur un bouton, sélectionné dans la liste des boutons, pour exécuter le graphique souhaité.
la source
Si vous essayez de placer un bouton dans une bordure de rectangle arrondi, vous devriez consulter l'exemple de msdn . J'ai trouvé cela en recherchant des images du problème sur Google (au lieu du texte). Leur rectangle extérieur volumineux est (heureusement) facile à enlever.
Notez que vous devrez redéfinir le comportement du bouton (puisque vous avez changé le ControlTemplate). Autrement dit, vous devrez définir le comportement du bouton lorsque vous cliquez sur une balise Trigger (Property = "IsPressed" Value = "true") dans la balise ControlTemplate.Triggers. J'espère que cela fera gagner à quelqu'un d'autre le temps que j'ai perdu :)
la source