2012-04-23 37 views
6

hộp văn bản trong Windows Forms được sử dụng để có thuộc tính PasswordChar. Trong WPF có một điều khiển thêm cho điều đó: PasswordBox. Đây không phải là vấn đề nhưng ứng dụng của tôi chạy trên thiết bị chỉ có màn hình cảm ứng. Rất tiếc, hộp mật khẩu không hỗ trợ bàn phím ảo. Tôi đã tự hỏi nếu có một cách để thêm tính năng char mật khẩu vào hộp văn bản tiêu chuẩn.TextBox Password Char

+1

gần giống với [câu hỏi này] (http://stackoverflow.com/questions/4612757/how-do-i-change-the-on-screen-keyboard-for-a-passwordbox) –

+0

Không, điều đó có hoàn toàn không liên quan gì đến vấn đề của tôi. Tôi đang nói về WPF trên Windows và câu hỏi khác là về Silverlight cho Windows Phone. – David

Trả lời

4

This answer có thể cung cấp cho bạn những gì bạn cần.

+1

Lúc đầu, tôi đã cố gắng để viết kiểm soát của riêng tôi nhưng điều đó áp đặt một số vấn đề với vị trí caret, xóa ký tự và lựa chọn văn bản. Do đó tôi đã sử dụng câu trả lời này ở dạng hơi khác. Tôi ẩn một hộp văn bản phía sau hộp mật khẩu và tập trung vào hộp văn bản khi hộp mật khẩu được tập trung. Thuộc tính văn bản của hộp văn bản được gắn với thuộc tính Mật khẩu của hộp mật khẩu. Nó không phải là rất sạch sẽ nhưng nó loại công trình cho tôi! Cảm ơn! – David

1

Tôi tin rằng cách duy nhất bạn có thể đạt được điều này là tạo điều khiển của riêng bạn dựa trên hộp văn bản. Sau đó, chỉ cần gắn kết thuộc tính văn bản thực tế với thuộc tính trả về ký tự mật khẩu của bạn thay vì mật khẩu thực. Sau đó, bạn có thể lấy mật khẩu như một thuộc tính phụ thuộc (mặc dù tôi đã nghe điều này là không an toàn, đó là lý do tại sao nó không phải là thuộc tính phụ thuộc trong hộp mật khẩu), hoặc chỉ là một thuộc tính thông thường và truy cập nó bằng cách truyền toàn bộ đối tượng textbox .

2

Tôi đã giải quyết vấn đề cụ thể này bằng cách tạo hai Thuộc tính cho nội dung Mật khẩu và liên kết cả hai giá trị đó với cùng một giá trị Mô hình. Một trong số đó (phần tử UI nhìn thấy được) liên kết với Mật khẩu. The Get trên tài sản này tất nhiên sau đó trả về một mảng các ký tự để hiển thị. Các hàm phải sử dụng văn bản mật khẩu có thể sử dụng thuộc tính PlainPassword.

Thêm "UpdateSourceTrigger = PropertyChanged" vào Ràng buộc cho hộp văn bản làm cho các ký tự xuất hiện trong hộp văn bản khi chúng được nhập.

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

im mới ở đây nhưng có lẽ tôi có thể giúp bạn. tôi tìm thấy điều này -> có thể làm việc whit WPF và passwordbox

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

OFC u làm pass_passbox.Text này nếu textbox của nó nhưng khi thay đổi WPF passwordbox u cần phải viết có thể pass_passbox.Password và u có thể làm thay đổi từ bàn phím màn hình .

không kiểm tra đầy đủ nhưng u có thể thiết lập lại cách này

và u có thể làm chọn như thế này:

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

u có thể thấy this.pass_passbox.Password là như nhau ở textbox this.pass_passbox.Text