2014-11-27 3 views
0

Я написал стиль PasswordBox. Я хочу сделать подсказку в текстовом поле, но когда потерянный фокус, текст подсказки appering.Where я делаю ошибку, Как я могу решить эту проблему?PasswordBox Hint Text в WPF

Вот код:

<Style TargetType="{x:Type PasswordBox}" xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <Style.Resources> 
     <VisualBrush x:Key="Bg1" AlignmentX="Center" AlignmentY="Center" Stretch="None" > 
      <VisualBrush.Visual> 
       <Label Content="Enter password" Foreground="LightGray" Margin="5,0,0,0"/> 
      </VisualBrush.Visual> 
     </VisualBrush> 
     <VisualBrush x:Key="Bg2" AlignmentX="Center" AlignmentY="Center" Stretch="None" > 
      <VisualBrush.Visual> 
       <Label Content="" Foreground="LightGray" Margin="5,0,0,0"/> 
      </VisualBrush.Visual> 
     </VisualBrush> 
    </Style.Resources> 
    <Setter Property="FontSize" Value="16"/> 
    <Setter Property="Foreground" Value="#FF585858"/> 
    <Setter Property="VerticalContentAlignment" Value="Center"/> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type PasswordBox}"> 
       <Border CornerRadius="2" x:Name="border" Background="{TemplateBinding Background}" BorderThickness="1" BorderBrush="LightGray"> 
        <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Visible" Margin="0" ScrollViewer.CanContentScroll="True" x:Name="PART_ContentHost"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsFocused" Value="True"> 
         <Setter Property="BorderBrush" TargetName="border" Value="#FFD0D0D0"/> 
         <Setter Property="BorderThickness" TargetName="border" Value="2"/> 
        </Trigger> 

        <DataTrigger Binding="{Binding Path=Password}" Value="{x:Static sys:String.Empty}"> 
         <Setter Property="Background" Value="{StaticResource Bg2}" /> 
        </DataTrigger> 

        <DataTrigger Binding="{Binding Path=Password}" Value="{x:Null}"> 
         <Setter Property="Background" Value="{StaticResource Bg1}" /> 
        </DataTrigger>      

        <Trigger Property="IsKeyboardFocused" Value="True"> 
         <Setter Property="Background" Value="White" /> 
        </Trigger>      

       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Спасибо за ваши советы.

ответ

1

Свойство Password в PasswordBox не является зависимым имуществом по некоторым причинам безопасности. Поэтому он не может использоваться в Trigger. Триггеры, которые вы применяли для свойства Password, не работали. В этом причина появляется текст подсказки, даже если у вас есть правильный текст. Работает только триггер, применяемый к IsKeyboardFocused, независимо от того, пуст ли пароль или NULL.

Следующий пост должен давать хорошие идеи для реализации водяного знака для ввода пароля,

http://prabu-guru.blogspot.in/2010/06/how-to-add-watermark-text-to-textbox.html

+0

Спасибо за ответ. Могу ли я обойтись без использования кода. Должен ли я писать код cs? – MLElyakan

+2

Да Вам нужен код CS. – Jawahar

Смежные вопросы