TOC

This article has been localized into Vietnamese by the community.

Các control cơ bản:

PasswordBox control

Để chỉnh sửa các văn bản thông thường trong WPF chúng ta có TextBox, nhưng làm sao để hiển thị và chỉnh sửa các dòng text mật khẩu? Chức năng gần như giống nhau hoàn toàn, nhưng chúng ta muốn WPF hiển thị nội dung khác hơn là các ký tự thực tế nhập vào mật khẩu, để bảo vệ các ký tự khỏi bị nhìn lén. Để đáp ứng nhu cầu này, WPF có control PasswordBox, một control rất dễ dùng tương tự như TextBox. Bạn có thể xem ví dụ dưới đây:

<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PasswordBoxSample" Height="160" Width="300">
    <StackPanel Margin="10">
        <Label>Text:</Label>
        <TextBox />
        <Label>Password:</Label>
        <PasswordBox />
    </StackPanel>
</Window>

Như ảnh chụp ở trên, ta có thể nhập các dòng ký tự giống nhau trong hai hộp nhập văn bản, nhưng trong hộp nhập mật khẩu, các ký tự được thay thế bởi các dấu tròn. Bạn có thể thiết lập ký tự nào được dùng để thay thế bằng cách gán giá trị cho thuộc tính PasswordChar:

<PasswordBox PasswordChar="X" />

Trong ví dụ này, ký tự X sẽ được dùng thay ví các dấu chấm tròn. Bạn cũng có thể thiết lập độ dài của password, thông qua thuộc tính MaxLength:

<PasswordBox MaxLength="6" />

Trong ví dụ dưới ta cập nhật control với 2 thuộc tính trên:

<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PasswordBoxSample" Height="160" Width="300">
    <StackPanel Margin="10">
        <Label>Text:</Label>
        <TextBox />
        <Label>Password:</Label>
        <PasswordBox MaxLength="6" PasswordChar="X" />
    </StackPanel>
</Window>

Chú ý cách các ký tự hiển thị, các dấu X được thay thế cho các ký tự nhập vào và chỉ cho phép 6 ký tự trong control.

PasswordBox và binding giá trị

Khi bạn cần lấy mật khẩu được nhập trong PasswordBox, bạn có thể lấy giá trị từ thuộc tính Password thông qua Code-behind. Tuy nhiên, vì lý do bảo mật, thuộc tính Password không phải là một thuộc tính phụ thuộc (dependency property), tức là bạn không thể bind giá trị vào thuộc tính này.

Việc không bind được giá trị có thể hoặc không quan trọng với bạn như đã nêu ở trên, bạn vẫn có thể đọc mật khẩu qua Code-behind, nhưng nếu áp dụng kiến trúc MVVM hoặc bạn ưu tiên binding data, có một cách khác có thể ứng dụng. Bạn có thể đọc thêm về cách binding giá trị cho PasswordBox ở liên kết dưới: http://blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!