从代码背后的MVVM处理密码框

时间:2015-03-10 05:53:30

标签: mvvm code-behind datacontext passwordbox

我知道那些MVVM纯粹主义者和PasswordBox绑定问题,但我通过代码隐藏处理我的登录并且它可以工作,但是对于我的生活,我无法从代码隐藏中使用DataContext。

此事件附加到我的密码箱的PasswordChanged事件。这可以用另一种方式处理吗?

private void CopyPassword(object sender, RoutedEventArgs e)
    {
        if(e.Source is PasswordBox)
        {
            var source = e.Source as PasswordBox;
            if(source.DataContext is LoginViewModel)
            {
                var vm = source.DataContext as LoginViewModel;
                vm.Password = source.Password;
            }
        }
   }

1 个答案:

答案 0 :(得分:1)

是的,它可以通过多种方式处理。代码隐藏没有任何问题。您当前的解决方案存在的问题是,您使用PasswordBox绑定了具体的视图模型,这使得其他视图模型无法重复使用。

更好的方法是使用事件侦听器编写附加属性。

有许多资源可以帮助您入门,请查看右侧的相关链接。

http://www.wpftutorial.net/PasswordBox.html