Текстовое поле WPF / текстовое поле пароля исчезают при клике
Я делаю экран входа для приложения wpf. Я хочу 2 текстовых поля, одно для имени пользователя и пароля.
Для имени пользователя я использовал текстовое поле и добавил к нему текст ("Имя пользователя"), который исчезает, когда пользователь нажимает на него, чтобы ввести свое имя пользователя. Я сделал это с кодом ниже.
Я не могу воспроизвести это для пароля. Я не верю, что смогу использовать текстовое поле, так как не смогу замаскировать пользовательский ввод в * или что-то еще, и я не могу найти способ жестко закодировать "пароль" в поле, чтобы оно исчезло когда пользователь нажимает.
Как я могу это сделать? Я знаю, что это возможно, так как многие сайты имеют эту функцию, но я не могу понять это после долгого поиска в Google!
Я должен подчеркнуть, что я совершенно новичок в программировании, поэтому ответы, нацеленные на новичка, будут высоко оценены!
Спасибо
xaml: GotFocus="UserNameTextbox_OnGotFocus" Foreground="#FFA19DA1"/>
private void UserNameTextbox_OnGotFocus(object sender, RoutedEventArgs e)
{
UserNameTextbox.Text = "";
}
2 ответа
Попробуйте эту технику:
XAML:
<Window x:Class="WpfApplication16.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication16"
mc:Ignorable="d"
Title="MainWindow" Height="100" Width="342.111" Background="DarkBlue">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="User Name:" HorizontalAlignment="Right" Foreground="White" />
<TextBox Name="txtUserName" Grid.Column="1" TextChanged="txtUserName_TextChanged" />
<TextBlock Name="tbUsername" Text="User Name" Foreground="Gray" IsHitTestVisible="False" Margin="4,0" VerticalAlignment="Center" Grid.Column="1" />
<TextBlock Grid.Row="1" Text="Password:" Foreground="White" HorizontalAlignment="Right" />
<PasswordBox Name="pwbPassword" Grid.Row="1" Grid.Column="1" PasswordChanged="pwbPassword_PasswordChanged" />
<TextBlock Name="tbPassword" Grid.Row="1" Grid.Column="1" Foreground="Gray" Margin="4,0" VerticalAlignment="Center" Text="Password" IsHitTestVisible="False" />
</Grid>
</Window>
Код позади:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void txtUserName_TextChanged(object sender, TextChangedEventArgs e)
{
if (txtUserName.Text.Length > 0)
tbUsername.Visibility = Visibility.Collapsed;
else
tbUsername.Visibility = Visibility.Visible;
}
private void pwbPassword_PasswordChanged(object sender, RoutedEventArgs e)
{
if (pwbPassword.Password.Length > 0)
tbPassword.Visibility = Visibility.Collapsed;
else
tbPassword.Visibility = Visibility.Visible;
}
}
Похоже, вам нужно немного настроить свой пароль. Один из способов добиться этого - создать UserControl с паролем и надписью над ним. В GotFocus for box для пароля вы просто устанавливаете видимость текстового блока как Collapsed. И не забудьте установить HitTestVisible=false для текстового блока.