2013-03-23 32 views

回答

1

我不認爲我們可以在密碼控件中加水印。 您可以將具有wartermark的TextBox放入與Password控件相同的行和同一列中,然後處理兩個控件的GotFocus和LostFocus事件,以使控件可見或摺疊。

4

拿上WinRT XAML Toolkit看看。

他們也有

  1. WatermarkTextBox
  2. WatermarkPasswordBox

自己就可以實現自己的控件:

中的.xaml:

<Border x:Name="brdPassword" Margin="5,0,5,10" BorderThickness="2" BorderBrush="White" CornerRadius="5" Grid.Row="0" 
           Background="White" Height="50" VerticalAlignment="Stretch"> 
          <Grid> 
       <TextBox x:Name="PasswordWatermark" TextWrapping="Wrap" 
          Text="Watermark" Foreground="#FFC4C4C4" IsHitTestVisible="False" 
          Background="{x:Null}" BorderThickness="0" Padding="0,-10" 
          FontSize="26.667" /> 
       <PasswordBox x:Name="pbPassword" LostFocus="PasswordLostFocus" 
         GotFocus="PasswordGotFocus" Background="{x:Null}" 
         FontSize="26.667" Margin="0,-12,0,-9" VerticalAlignment="Center" 
         BorderThickness="0" Opacity="0" /> 
       </Grid> 
       </Border> 

中的.cs

private void PasswordLostFocus(object sender, RoutedEventArgs e) 
    { 
     CheckPasswordWatermark(); 
    } 

    private void CheckPasswordWatermark() 
    { 
     var passwordEmpty = string.IsNullOrEmpty(pbPassword.Password); 
     PasswordWatermark.Opacity = passwordEmpty ? 100 : 0; 
     pbPassword.Opacity = passwordEmpty ? 0 : 100; 
    } 

    private void PasswordGotFocus(object sender, RoutedEventArgs e) 
    { 
     PasswordWatermark.Opacity = 0; 
     pbPassword.Opacity = 100; 
    } 

希望這有助於

+1

看起來像他想要的。好帖子。 –

+0

@ JerryNixon-MSFT,我有問題給你。可能在這裏我需要更改可見性(不透明度),因爲當opacity == 0時,控件仍然檢測事件並參與Tab鍵順序? – jimpanzer