PasswordBox在导航中丢失其内容

时间:2012-05-28 11:03:59

标签: wpf

我在PasswordBox上使用Page。由于实施的工作流程,用户可以导航到子页面(NavigationWindow),然后返回GoBack()到主页面。

但是这样做时,密码框总是空的!我的工作是防止这种行为,但目前我不知道如何实现这一目标。

如果能帮助我,那就太好了。 感谢

2 个答案:

答案 0 :(得分:2)

这是一个功能。

请参阅:How to bind to a PasswordBox in MVVM

要启用向后导航,需要存储页面状态。这不安全。

答案 1 :(得分:0)

我不认为他确切的问题是一个功能,但导航服务的一个错误。

在您的代码背后,您没有简单的方法来区分导航控件在导航时消隐密码或用户通过从框中删除它来消隐它。 因此,如果您不考虑这一点,如果您导航到另一个页面,您在viewmodel中的密码将始终为空。

我用这个hack来确定谁调用我的密码更改处理程序来更新视图模型:

private void PasswordBox_OnPasswordChanged(object sender, RoutedEventArgs e)
{
    StackTrace stack = new StackTrace();
    StackFrame[] stackframes = stack.GetFrames();
    foreach (StackFrame stackFrame in stackframes)
        if(stackFrame.GetMethod().Name == "Navigate")
            return;
    ViewModelPassword = PasswordBox.SecurePassword;
....

请看这里:http://www.wpfsharp.com/2011/04/08/wpf-navigationservice-blanks-passwordbox-password-which-breaks-the-mvvm-passwordhelper/