2012-04-23 13 views
6

Windows Formsのテキストボックスでは、PasswordCharプロパティが使用されていました。 WPFには、そのための特別なコントロールがあります:PasswordBox。これは問題ではありませんが、私のアプリケーションはタッチスクリーンのみのデバイスで動作します。残念ながら、パスワードボックスはオンスクリーンキーボードをサポートしていません。私は標準のテキストボックスにパスワードの文字機能を追加する方法があるのだろうかと思っていた。TextBox Password Char

+1

[この質問とほぼ同じです](http://stackoverflow.com/questions/4612757/how-do-i-change-the-on-screen-keyboard-for-a-passwordbox) –

+0

いいえ、それは私の問題とはまったく関係がありません。私はWindows上のWPFについて話していますが、他の質問はSilverlight for Windows Phoneについてです。 – David

答えて

4

This answerは、必要なものを提供する場合があります。

+1

私は自分でコントロールを作成しようとしましたが、キャレットの位置、文字の削除、テキストの選択にいくつかの問題があります。したがって私はこの答えを少し違った形で使いました。私はpasswordboxの背後にあるテキストボックスを隠し、passwordboxがフォーカスされるとテキストボックスにフォーカスします。テキストボックスのtextプロパティは、パスワードボックスのPasswordプロパティにバインドされます。それは非常にきれいではないが、それは私のための作品のようなもの!ありがとう! – David

1

これを実現する唯一の方法は、テキストボックスに基づいて独自のコントロールを作成することです。次に、実際のテキストプロパティを、実際のパスワードではなくパスワード文字を返すプロパティにバインドします。次に、依存関係プロパティとしてパスワードを取得することができます(パスワードボックスの依存プロパティではないと聞きましたが)。または通常のプロパティであり、テキストボックスオブジェクト全体を渡すことでアクセスします。

2

私はこの特定の問題を回避するために、パスワードコンテンツの2つのプロパティを作成し、両方を同じModel値にバインドしました。そのうちの1つ(可視UIエレメント)がPasswordにバインドされます。もちろんこのプロパティを取得すると、表示する文字の配列が返されます。パスワードテキストを使用する必要のある関数は、PlainPasswordプロパティを使用できます。

"UpdateSourceTrigger = PropertyChanged"をテキストボックスのBindingに追加すると、入力時にテキストボックスに文字が表示されます。

public string Password 
    { 
    set 
    { 
     Model.Password = value; 
     OnPropertyChanged("Password"); 
    } 
    get 
    { 
     return new String('●', Model.Password.Length); 
    } 
    } 

    public string PlainPassword 
    { 
    set 
    { 
     Model.Password = value; 
     OnPropertyChanged("Password"); 
    } 
    get { return Model.Password; } 
    } 
-1

helló!

ここに新しいですが、多分私はあなたを助けることができます。私はこれを見つける - >場合uがこのpass_passbox.Textを行うOFC作業聖霊降臨祭のWPFとpasswordbox

private void delete_Click(object sender, RoutedEventArgs e) 
    { 
    if (pass_passbox.IsFocused == true) 
     { 
      pass_passbox.Password= ""; 
     } 
    } 

をすることができ、そのテキストボックスが、変更WPFのpasswordbox uが記述する必要があるときpass_passbox.Passwordことができ、uは、画面キーボードからの変更を行うことができます。

完全にテストされたが、uがこのよう

をリセットすることができ、uは行うことができない。このように選択します。

string Query = "Select * from [employeeinfo] where username='" + this.txt_user_name.Text + "' and password='" + this.pass_passbox.Password + "' "; 

uはthis.pass_passbox.Passwordを見ることができるテキストボックスに同じであるthis.pass_passbox.Text