2009-12-16 21 views
5

TextBox ve PasswordBox için ortak bir stili nasıl tanımlayabilirim?PasswordBox ve TextBox için Ortak Stil

Benim yaklaşımım, TargetType FrameworkElement için bir Stil tanımladım, ancak bu genel stil olarak çalışmıyor, sonra FrameworkElement üzerinde az sayıda öntanım yok. Benim TextBox Stili olan

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

cevap

12

"System.Windows.Controls.PasswordBox" bulunan bu

<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

Stil Mülkiyet "PasswordBoxSpecProperty" doesnt gibi bir şey deneyin PasswordBoxStyle eşittir "ControlProperty" için "System.Windows.Controls.Control" ve "TextboxSpecproperty" "System.Windows.Controls.TextBox" için aynı –

+0

ah lol, tamam anladım .. çözdüm ... TextBox.MinHeight thx:) –

+0

@MarioBinder özellikleriyle ilgili hatayı nasıl çözdün? Aynı problemim var. Stil özelliğini App.xaml içine koymalı mıyım? Bir kaynak dizinde ..... – 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>