2010-03-19 10 views
16

besoin d'avoir un style de bordure plate pour zone de texte à base de WPF ... vraiment surpris de voir qu'il n'y a pas moyen facile d'obtenir cela comme était textbox WinForms BorderStyle.FixedSingleWPF style textbox bordure plate

est-il un moyen facile pour obtenir ce fait pour WPF textbox

Répondre

6
<TextBox BorderThickness="1" BorderBrush="Black"> 

juste essayer cela en noir ou gris

+6

Cela ne semble fonctionner tandis que la zone de texte n'est pas mise au point. Lorsque la mise au point est effectuée, la bordure est mise en évidence avec deux tons bleus. –

16

la façon de le faire est d'utiliser un modèle de contrôle pour dessiner la bordure vous-même. Vous pouvez le faire de différentes façons, heres un couple pour vous de regarder.

L'approche hack:

<TextBox> 
    <TextBox.Template> 
     <ControlTemplate TargetType="{x:Type TextBox}"> 
      <Grid> 
       <Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="1"/> 
       <TextBox Margin="1" Text="{TemplateBinding Text}" BorderThickness="0"/> 
      </Grid> 
     </ControlTemplate> 
    </TextBox.Template> 
</TextBox> 

puis en utilisant les ressources ... theres

<ResourceDictionary> 
    <Color x:Key="detailMark">#FFA1A9B3</Color> 
    <SolidColorBrush x:Key="detailMarkBrush" Color="{StaticResource ResourceKey=detailMark}" /> 
    <Style x:Key="flatTextBox" TargetType="{x:Type TextBox}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBox}"> 
        <Grid> 
         <Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="1"/> 
         <TextBox Margin="1" Text="{TemplateBinding Text}" BorderThickness="0"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ResourceDictionary> 

et vous pouvez utiliser le style:

<TextBox Style="{StaticResource ResourceKey=flatTextBox}" />