将PasswordBox的密码绑定到另一个控件

时间:2014-09-10 06:15:55

标签: wpf binding user-controls passwordbox

我正在公司内部处理应用程序,他们需要某种用户身份验证。我的代码完全适用于身份验证,但有一些视觉错误。

我知道我的代码会将Password保留在内存中并且不是应该这样做的,但由于这是公司内部的,因此黑客攻击没有任何好处。我想听听有人有更好的解决方案。这可能是不可能的,因为在PasswordBox内的UserControl里面使用了UserControl。这必须一直向上发送数据,我不知道如何做到这一点。

现在,回到主题。我前一段时间创建了一个WatermarkTextBox,代码如下所示。下面的代码就像它应该的那样。

<TextBlock Text="{Binding Path=Watermark, RelativeSource={RelativeSource AncestorType=UserControl},
                  FallbackValue='This prompt dissappears as you type...'}"
           Visibility="{Binding ElementName=txtUserEntry, Path=Text.IsEmpty,
                        Converter={StaticResource BooleanToVisibilityConverter}}" />
<TextBox Name="txtUserEntry"
         Text="{Binding Path=Text, UpdateSourceTrigger=PropertyChanged,
                RelativeSource={RelativeSource AncestorType=UserControl}}" />

现在我为PasswordWatermarkBox使用了类似的代码。

<TextBlock Text="{Binding Path=Watermark, RelativeSource={RelativeSource AncestorType=UserControl}, 
                  FallbackValue='This prompt dissappears as you type...'}"
           Visibility="{Binding ElementName=txtUserEntry, Path=Password.IsEmpty,
                        Converter={StaticResource BooleanToVisibilityConverter}}" />
<PasswordBox Name="txtUserEntry"
             local:PasswordHelper.Attach="True"
             local:PasswordHelper.Password="{Binding Path=Text,
                        UpdateSourceTrigger=PropertyChanged,
                        RelativeSource={RelativeSource AncestorType=UserControl},
                        Mode=TwoWay}" />

在这里,我可以使用Text DP从附加属性local:PasswordHelper.Password获取纯文本密码。这里的问题是Watermark没有更新。在第一个示例中检查Text.IsEmpty有效,但此处并非如此。 Password.IsEmpty也不起作用,local:PasswordHelper.Password.IsEmpty也不起作用。

0 个答案:

没有答案