2016-11-20 76 views
0

我用它来圆TextBox的角落,WPF PasswordBox圆角

<ControlTemplate x:Key="TextBoxBaseControlTemplate" TargetType="{x:Type TextBoxBase}"> 
     <Border Background="{TemplateBinding Background}" 
      x:Name="Bd" BorderBrush="#FFE6DDDD" 
      BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="10"> 
      <ScrollViewer x:Name="PART_ContentHost"/> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/> 
       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
      </Trigger> 
      <Trigger Property="Width" Value="Auto"> 
       <Setter Property="MinWidth" Value="100"/> 
      </Trigger> 
      <Trigger Property="Height" Value="Auto"> 
       <Setter Property="MinHeight" Value="20"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

我申请,

 <TextBox Template="{StaticResource TextBoxBaseControlTemplate}" 
      Height="25" 
      Margin="168,100,139,194" 
      HorizontalContentAlignment="Center" 
      VerticalContentAlignment="Center" 
      Background="{x:Null}" 
      BorderBrush="{x:Null}" 
      FontFamily="Aller Light">    
     </TextBox> 

任务完成

enter image description here

然后我想在PasswordBox中做,

<ControlTemplate x:Key="passwordbox" TargetType="{x:Type PasswordBox}"> 
     <Border Background="{TemplateBinding Background}" 
      x:Name="Bd" BorderBrush="#FFE6DDDD" 
      BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="10"> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/> 
       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
      </Trigger> 
      <Trigger Property="Width" Value="Auto"> 
       <Setter Property="MinWidth" Value="100"/> 
      </Trigger> 
      <Trigger Property="Height" Value="Auto"> 
       <Setter Property="MinHeight" Value="20"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

申请

<PasswordBox Template="{StaticResource passwordbox}" 
       Height="25" 
       Margin="168,140,139,154" 
       HorizontalContentAlignment="Center" 
       VerticalContentAlignment="Center" 
       Background="{x:Null}" 
       Password="someonepass"> 
    </PasswordBox> 

这似乎是成功的,但不能输入的内容。 (第二个框)

enter image description here

如果我删除模板,通常

enter image description here

如何解决呢?谢谢...

+0

看起来你忘记了一个'PART_'。 –

回答

0

您的PasswordBox控制模板遗漏了一个名为“PART_ContentHost”的部件(最终为ScrollViewer)。以您的TextBoxBase模板为例。

所以你temaplate应该是:

<ControlTemplate x:Key="passwordbox" TargetType="{x:Type PasswordBox}"> 
    <Border Background="{TemplateBinding Background}" 
     x:Name="Bd" BorderBrush="#FFE6DDDD" 
     BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="10"> 
     <ScrollViewer Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
     </Trigger> 
     <Trigger Property="Width" Value="Auto"> 
      <Setter Property="MinWidth" Value="100"/> 
     </Trigger> 
     <Trigger Property="Height" Value="Auto"> 
      <Setter Property="MinHeight" Value="20"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

我希望它可以帮助你。