2010-03-19 11 views
16

necesita tener estilo de borde plano de cuadro de texto basado WPF ... realmente sorprendido de ver que no hay una manera fácil de conseguir esto como estaba en winforms cuadro de texto BorderStyle.FixedSingleWPF estilo de borde plana cuadro de texto

es ninguna manera fácil para hacer esto de cuadro de texto WPF

Respuesta

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

acaba de hacer esto mediante el negro o gris

+6

Esto sólo parece funcionar mientras que el cuadro de texto no está enfocado. Cuando se enfoca, el borde se resalta con dos tonos azules. –

16

la manera de hacer esto es utilizar una plantilla de control para dibujar el borde mismo. Puedes hacer esto de muchas maneras diferentes, hay un par para que lo mires.

El enfoque truco rápida:

<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> 

y luego theres utilizando recursos ...

<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> 

y entonces usted puede utilizar el estilo:

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