2010-03-19 14 views
16

bisogno di avere stile di bordo appartamento in testo WPF basato ... davvero sorpreso di vedere non v'è alcun modo semplice per ottenere questo, come era in WinForms testo BorderStyle.FixedSingleWPF stile del bordo piatto textbox

è alcun modo semplice per ottenere questo fatto per WPF testo

risposta

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

basta provare questo nero o grigio

+6

Questo appare solo al lavoro mentre la casella di testo non è focalizzata. Quando ottiene la messa a fuoco, il bordo viene evidenziato con due sfumature blu. –

16

il modo per farlo è quello di utilizzare un modello di controllo per disegnare il bordo da soli. Puoi farlo in molti modi diversi, ecco un paio per te da guardare.

L'approccio trucco veloce:

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

e poi theres utilizzando le risorse ...

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

e quindi è possibile utilizzare lo stile:

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