有趣的。
查看此博客文章,看看它是否对您有所帮助。
http://blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html
显然链接现在已经死了,所以这是原始解决方案(在此处找到):
你可以使用附加的属性来创建一个这样的助手:
公共静态类 PasswordHelper
{
公共静态只读 DependencyProperty PasswordProperty =
DependencyProperty.RegisterAttached("密码",
typeof(字符串),typeof(密码助手),
新的 FrameworkPropertyMetadata(string.Empty, OnPasswordPropertyChanged));
公共静态只读 DependencyProperty AttachProperty =
DependencyProperty.RegisterAttached("附加",
typeof(bool), typeof(PasswordHelper), new PropertyMetadata(false, Attach));
私有静态只读 DependencyProperty IsUpdatingProperty =
DependencyProperty.RegisterAttached("IsUpdating", typeof(bool),
类型(密码助手));
公共静态无效 SetAttach(DependencyObject dp,布尔值)
{
dp.SetValue(附加属性,值);
}
公共静态布尔 GetAttach(DependencyObject dp)
{
返回 (bool)dp.GetValue(AttachProperty);
}
公共静态字符串 GetPassword(DependencyObject dp)
{
返回(字符串)dp.GetValue(密码属性);
}
公共静态无效 SetPassword(DependencyObject dp,字符串值)
{
dp.SetValue(密码属性,值);
}
私有静态布尔 GetIsUpdating(DependencyObject dp)
{
返回(布尔)dp.GetValue(IsUpdatingProperty);
}
私有静态无效 SetIsUpdating(DependencyObject dp,布尔值)
{
dp.SetValue(IsUpdatingProperty, value);
}
私有静态无效 OnPasswordPropertyChanged(DependencyObject 发件人,
DependencyPropertyChangedEventArgs e)
{
PasswordBox passwordBox = 作为 PasswordBox 的发件人;
passwordBox.PasswordChanged -= PasswordChanged;
if (!(bool)GetIsUpdating(passwordBox))
{
passwordBox.Password = (string)e.NewValue;
}
passwordBox.PasswordChanged += PasswordChanged;
}
私人静态无效附加(DependencyObject发件人,
DependencyPropertyChangedEventArgs e)
{
PasswordBox passwordBox = 作为 PasswordBox 的发件人;
如果(密码框 == 空)
返回;
if ((bool)e.OldValue)
{
passwordBox.PasswordChanged -= PasswordChanged;
}
if ((bool)e.NewValue)
{
passwordBox.PasswordChanged += PasswordChanged;
}
}
私有静态无效密码更改(对象发送者,RoutedEventArgs e)
{
PasswordBox passwordBox = 作为 PasswordBox 的发件人;
SetIsUpdating(密码框,真);
设置密码(密码框,密码框.密码);
SetIsUpdating(密码框,假);
}
}
用它:
<PasswordBox w:PasswordHelper.Attach="True"
w:PasswordHelper.Password="{Binding Text, ElementName=plain, Mode=TwoWay}"
Width="100"/>