2011-09-30 2 views
4

Je souhaite que ma bordure soit submergée comme une zone de texte. Comment faire ça? Existe-t-il un moyen d'obtenir le controltemplate pour mimer la frontière parent?Obtention d'un contrôle de bordure pour avoir une bordure engloutie

+0

Avez-vous un exemple? Le TextBox a juste une frontière plate. – Ray

+0

La zone de texte dans Windows XP a une bordure de style WinForms engloutie. –

+0

Ce n'est pas pour moi. Mais je comprends ce que tu veux dire. Je vois le même effet dans les notes Lotus. – Ray

Répondre

8

Il n'y a pas de thème pour vous d'utiliser, mais vous pouvez contourner comme ceci:

En utilisant ce modèle MSDN (http://i.msdn.microsoft.com/dynimg/IC84967.gif):

diagram of border styles

Voici ma recommandation : (enfoncé intérieurement)

Il suffit de changer la hauteur/largeur de la bordure extérieure et vous utilisez ce bloc de XAML comme un TextBox. Inversez les deux balises de bordure si vous voulez plutôt une bordure de bordure. Ça devrait être facile pour toi.

<Border Width="100" Height="200" 
     BorderBrush="Gainsboro" BorderThickness="0,0,5,5"> 
    <Border BorderBrush="Gray" BorderThickness="5,5,0,0"> 
     <TextBox Text="Hello World" 
       BorderThickness="0" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" /> 
    </Border> 
</Border> 

Remerciements à: Style a border with a different brush color for each corner

devrait ressembler à ceci:

Sample of border-style example

+0

Si vous êtes soucieux de la réutilisation, un UserControl qui hérite de TextBox est très bien. –

+0

Je l'ai résolu en utilisant les quatre bordures. J'espérais ne pas avoir à créer les bordures manuellement, mais bon ... –

+0

J'ai supprimé l'attribut BorderThickness de TextBox, il n'est pas disponible. Aussi IMO les deux Border-Elements devraient être permutés. Le coin supérieur droit me semble faux par rapport à l'encadré 3D-Border créé par WinForms. Pas tout à fait sûr du coin inférieur gauche non plus. – SlapY

1

Vous pouvez essayer quelque chose comme ça

<Border Margin="20" BorderThickness="0.5" BorderBrush="Gray"> 
    <Border BorderThickness="1,1,0,0" BorderBrush="DarkGray"> 
     <ContentPresenter /> 
    </Border> 
</Border> 

Vous pourriez avoir besoin de jouer avec les couleurs bien.

+0

J'espérais utiliser la frontière du thème actuel. Vous savez comme l'aspect actuel de Windows. –