WPF中編輯常規的文字都是使用文本框,但是如果是輸入密碼呢?功能應該是一樣的,但是我們不想周邊的人看着我們一個字母一個字母的輸入,這樣密碼就被泄漏了,因此我們想用別的字符來替代真實密碼的顯示。出於這個目的,WPF有一個密碼框控件,用起來和文本框一樣。
<span style="font-size:14px;"><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></span>
在上面的截屏中,我在兩個框裏輸入了完全一樣的字符串,然而在密碼框裏面,字符串顯示爲幾個點。你還能控制使用什麼樣的字符來替代真實字符,用PasswordChar屬性就好:
<span style="font-size:14px;"><PasswordBox PasswordChar="X" /></span>
這樣的話X就會替代那些點,你還可以控制顯示字符的長度:<span style="font-size:14px;"><PasswordBox MaxLength="6" /></span>
下面的例子我把兩個屬性都用上了:<span style="font-size:14px;"><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></span>
注意現在密碼顯示爲6個X。
密碼框的綁定
當你需要獲取密碼框的密碼時,在後臺代碼使用Password屬性。然而,出於安全考慮,Password屬性並不是一個依賴屬性,也就意外着無法綁定。
這一點很重要。你仍然可以在後臺代碼讀到密碼,但是,如果要實現視圖模型,或者你熱衷於數據綁定,那就需要另外一種解決辦法了。你可以閱讀下面的鏈接來了解:http://blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html