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