2009-12-16 6 views
5

Come è possibile definire uno stile comune per il controllo TextBox e PasswordBox?Stile comune per PasswordBox e TextBox

Il mio approccio, ho definito uno stile per TargetType FrameworkElement ma questo non funziona come stile comune, quindi non esistono poche proprietà su FrameworkElement.

My Style TextBox è uguale al PasswordBoxStyle

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="SnapsToDevicePixels" Value="True"/> 
    <Setter Property="OverridesDefaultStyle" Value="True"/> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Setter Property="MinHeight" Value="30"/> 
    <Setter Property="AllowDrop" Value="true"/> 
    <Setter Property="FontFamily" Value="Verdana"/> 
    <Setter Property="FontSize" Value="14"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border Name="Border" CornerRadius="4" Padding="2" Background="White" BorderBrush="Black" BorderThickness="1" > 
        <ScrollViewer Margin="0" x:Name="PART_ContentHost"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

risposta

12

provare qualcosa di simile pretende molto

<Style x:Key="textboxPasswordboxStyles"> 
    <Setter Property="Control.ControlProperty" Value="value" /> 
    <Setter Property="TextBox.TextboxSpecproperty" Value="value" /> 
    <Setter Property="PasswordBox.PasswordBoxSpecProperty" Value="value" /> 
</Style> 
<Style TargetType="{x:Type TextBox}" 
    BasedOn="{StaticResource textboxPasswordboxStyles}"> 
</Style> 
<Style TargetType="{x:Type PasswordBox}" 
    BasedOn="{StaticResource textboxPasswordboxStyles}"> 
</Style> 
+0

Stile di proprietà "PasswordBoxSpecProperty" che si trova in "System.Windows.Controls.PasswordBox" lo stesso per "ControlProperty" "System.Windows.Controls.Control" e "TextboxSpecproperty" "System.Windows.Controls.TextBox" –

+0

ah lol, ok capisco .. ho risolto ... TextBox.MinHeight thx:) –

+0

@MarioBinder come hai risolto l'errore relativo alle proprietà? Ho lo stesso problema. Non dovrei inserire la proprietà style in App.xaml? In una directory di risorse ..... – Tarek

0
<Style x:Key="textboxPasswordboxStyles" TargetType="Control"> 
    <Setter Property="SnapsToDevicePixels" Value="True" /> 
    <Setter Property="OverridesDefaultStyle" Value="True" /> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None" /> 
    <Setter Property="Height" Value="20" /> 
    <Setter Property="MinHeight" Value="20" /> 
    <Setter Property="MaxHeight" Value="22"/> 
    <Setter Property="BorderThickness" Value="1.5"/> 
    <Setter Property="AllowDrop" Value="true" /> 
    <Setter Property="Template"> 
     <Setter.Value> 

      <ControlTemplate TargetType="{x:Type Control}"> 
       <Grid> 
        <Border Name="Border" CornerRadius="8" BorderThickness="{TemplateBinding BorderThickness}" > 
         <Border.Background> 
          <SolidColorBrush Color="White" x:Name="Background" /> 
         </Border.Background> 

         <Border.BorderBrush> 
          <SolidColorBrush Color="Gray" x:Name="BorderBrush" Opacity="1"/> 
         </Border.BorderBrush> 

         <ScrollViewer Margin="10,0,10,0" x:Name="PART_ContentHost" VerticalAlignment="Center"/> 

        </Border> 





       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 

    </Setter> 


</Style> 

<Style TargetType="TextBox" 
BasedOn="{StaticResource textboxPasswordboxStyles}"> 
</Style> 
<Style TargetType="PasswordBox" 
BasedOn="{StaticResource textboxPasswordboxStyles}"> 
</Style>