WPF PasswordBox圆角

时间:2016-11-20 09:38:05

标签: wpf xaml

我用它来围绕TextBox的角落,

    <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

如何解决?感谢...

1 个答案:

答案 0 :(得分:3)

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

我希望它可以帮到你。