2012-04-23 5 views
6

das Textfeld in Windows Forms, das eine PasswordChar-Eigenschaft verwendet. In WPF gibt es eine zusätzliche Kontrolle dafür: PasswordBox. Dies wäre kein Problem, aber meine Anwendung läuft auf einem Touchscreen-Gerät. Leider unterstützt die Passwortbox die Bildschirmtastatur nicht. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Kennwort-Zeichenfunktion in die Standardtextbox einzufügen.TextBox Kennwort Char

+1

fast identisch mit [diese Frage] (http://stackoverflow.com/questions/4612757/how-do-i-change-the-on-screen-keyboard-for-a-passwordbox) –

+0

Nein, das hat absolut nichts mit meinem Problem zu tun. Ich spreche über WPF unter Windows und die andere Frage betrifft Silverlight für Windows Phone. – David

Antwort

4

This answer können Sie mit, was Sie benötigen.

+1

Zuerst habe ich versucht, meine eigene Steuerung zu schreiben, aber das wirft einige Probleme mit Caret-Position, Zeichenlöschung und Textauswahl auf. Deshalb habe ich diese Antwort in einer etwas anderen Form benutzt. Ich verstecke ein Textfeld hinter der Passwortbox und fokussiere das Textfeld, wenn die Passwortbox fokussiert wird. Die Texteigenschaft des Textfelds ist an die Password-Eigenschaft des Kennwortfelds gebunden. Es ist nicht sehr sauber, aber es funktioniert irgendwie für mich! Vielen Dank! – David

1

Ich glaube, die einzige Möglichkeit, die Sie erreichen können, besteht darin, Ihre eigene Steuerung basierend auf Textbox zu erstellen. Verbinden Sie dann die eigentliche Texteigenschaft mit einer Eigenschaft, die Ihr Kennwort anstelle des eigentlichen Kennworts zurückgibt. Dann können Sie das Kennwort als Abhängigkeitseigenschaft abrufen (obwohl ich gehört habe, dass dies eher unsicher ist, weshalb es keine Abhängigkeitseigenschaft im Kennwortfeld ist) oder nur eine reguläre Eigenschaft und darauf zugreifen, indem Sie das gesamte Textfeldobjekt übergeben .

2

Ich habe mich um dieses spezielle Problem gekümmert, indem ich zwei Eigenschaften für den Passwort-Inhalt erstellt habe und beide an den gleichen Modellwert gebunden habe. Einer von ihnen (das sichtbare UI-Element) bindet sich an das Passwort. Die Get-on-Eigenschaft gibt natürlich ein Array von Zeichen zur Anzeige zurück. Die Funktionen, die den Kennworttext verwenden müssen, können die PlainPassword-Eigenschaft verwenden.

Durch Hinzufügen von "UpdateSourceTrigger = PropertyChanged" zur Bindung für das Textfeld werden die Zeichen so in das Textfeld eingefügt, wie sie eingegeben wurden.

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

hello!

ich bin neu hier aber vielleicht kann ich dir helfen. Das finde ich -> kann die Arbeit Whit WPF und PasswordBox

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

sein OFC u dieses pass_passbox.Text wenn seine Textbox tun, aber wenn ändern WPF PasswordBox u schreiben müssen, können pass_passbox.Password und u können von Bildschirmtastatur ändert tun .

nicht vollständig getestet, aber u kann auf diese Weise

zurückgesetzt und u kann wie folgt wähle:

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

u sehen this.pass_passbox.Password das gleiche bei Textbox ist this.pass_passbox.Text