2012-04-23 18 views
6

la casella di testo in Windows Form utilizzato per avere una proprietà PasswordChar. In WPF c'è un controllo extra per questo: PasswordBox. Questo non sarebbe un problema, ma la mia applicazione funziona su un dispositivo touchscreen. Sfortunatamente la casella della password non supporta la tastiera su schermo. Mi stavo chiedendo se c'è un modo di aggiungere la funzione di password del testo alla casella di testo standard.Password casella di testo Text

+1

quasi identico a [questa domanda] (http://stackoverflow.com/questions/4612757/how-do-i-change-the-on-screen-keyboard-for-a-passwordbox) –

+0

No, che ha assolutamente nulla a che fare con il mio problema. Sto parlando di WPF su Windows e l'altra domanda riguarda Silverlight per Windows Phone. – David

risposta

4

This answer potrebbe fornire ciò di cui hai bisogno.

+1

All'inizio ho provato a scrivere il mio controllo ma questo ha imposto alcuni problemi con la posizione del cursore, la cancellazione dei caratteri e la selezione del testo. Pertanto ho usato questa risposta in una forma leggermente diversa. Nascondo una casella di testo dietro la passwordbox e focalizzo la casella di testo quando la passwordbox viene messa a fuoco. La proprietà text della textbox è associata alla proprietà Password della casella password. Non è molto pulito ma funziona per me! Grazie! – David

1

Credo che l'unico modo per ottenerlo sia creare il proprio controllo basato sulla casella di testo. Quindi legare semplicemente la proprietà di testo effettiva a una proprietà che restituisce il carattere della password anziché la password effettiva. Quindi puoi inserire la password come proprietà di dipendenza (anche se ho sentito che questo è piuttosto insicuro, che è il motivo per cui non è una proprietà di dipendenza nella casella della password), o solo una proprietà regolare e accedervi passando l'intero oggetto textbox .

2

Ho cercato di risolvere questo particolare problema creando due proprietà per il contenuto della password e vincolandole entrambe allo stesso valore del modello. Uno di questi (l'elemento dell'interfaccia utente visibile) si collega alla password. Il Get su questa proprietà, ovviamente, restituisce una matrice di caratteri per la visualizzazione. Le funzioni che devono utilizzare il testo della password possono utilizzare la proprietà PlainPassword.

Aggiungendo "UpdateSourceTrigger = PropertyChanged" per l'associazione per la casella di testo fa sì che i personaggi ad apparire nella casella di testo in cui vengono inserite.

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ó!

Sono nuovo qui ma forse posso aiutarti. Trovo che questo -> può essere un lavoro di Pentecoste WPF e PasswordBox

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

OFC u fare questo pass_passbox.Text se testo, ma quando il cambiamento WPF PasswordBox u bisogno di scrivere può pass_passbox.Password e u può fare cambiamenti da tastiera a schermo .

non completamente testato, ma u può ripristinare questo modo

e u può fare selezionare in questo modo:

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

u può vedere this.pass_passbox.Password è lo stesso al testo this.pass_passbox.Text

Problemi correlati