6

私はWindowsPhoneアプリケーションを開発しています。その中で、ユーザーにログインを依頼します。

ログインページで、ユーザーはパスワードを入力する必要があります。

今私が欲しいのは、選択したときにパスワードの文字を表示するチェックボックスをユーザーに与えることです。

パスワードボックスにパスワード文字を表示するプロパティが表示されていません。

それを行う方法を提案してください。

4

4 に答える 4

23

PasswordBoxでそれが可能だとは思わないでください...単なる考えですが、非表示のTextBoxを使用して同じ結果を達成し、ユーザーがCheckBoxをクリックすると、PasswordBoxを非表示にしてTextBoxを表示するだけです。彼がもう一度クリックすると、可視性の状態が再び切り替わります...

編集

そして、これがその方法です!

ページを追加し、ContentPanel を StackPanel に変更して、次の XAML コードを追加するだけです。

<PasswordBox x:Name="MyPasswordBox" Password="{Binding Text, Mode=TwoWay, ElementName=MyTextBox}"/>
<TextBox x:Name="MyTextBox" Text="{Binding Password, Mode=TwoWay, ElementName=MyPasswordBox}" Visibility="Collapsed" />
<CheckBox x:Name="ShowPasswordCharsCheckBox" Content="Show password" Checked="ShowPasswordCharsCheckBox_Checked" Unchecked="ShowPasswordCharsCheckBox_Unchecked" />

次に、ページ コードに次を追加します。

private void ShowPasswordCharsCheckBox_Checked(object sender, RoutedEventArgs e)
{
    MyPasswordBox.Visibility = System.Windows.Visibility.Collapsed;
    MyTextBox.Visibility = System.Windows.Visibility.Visible;

    MyTextBox.Focus();
}

private void ShowPasswordCharsCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    MyPasswordBox.Visibility = System.Windows.Visibility.Visible;
    MyTextBox.Visibility = System.Windows.Visibility.Collapsed;

    MyPasswordBox.Focus();
}

これは問題なく動作しますが、さらにいくつかの作業を行うと、これを完全に MVVM 化できます。

于 2012-04-10T16:35:15.813 に答える
1

デフォルトの passwordbox では、必要な機能を実装することはできません。

ここで見つけることができる詳細情報: http://social.msdn.microsoft.com/Forums/en/wpf/thread/98d0d4d4-1463-481f-b8b1-711119a6ba99

于 2012-04-10T15:23:31.547 に答える
0

テキストボックスから継承する独自のコントロールを作成できますが、各文字の後に * に置き換えて、ページのプライベート変数内に真の値を格納します。チェックボックスを使用すると、テキストボックスの値が真の値を表示するか、* の値を表示するかを切り替えることができます。

これは洗練されたソリューションではなく、ベスト プラクティスでもありません。

于 2012-04-10T16:35:50.990 に答える