MVVM 从代码隐藏处理 PasswordBox

MVVM Handling PasswordBox from codebehind

我知道那些 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;
            }
        }
   }

是的,它可以通过多种方式处理。代码隐藏没有错。您当前的解决方案有一个问题,即您将具体视图模型与 PasswordBox 绑定在一起,这使得它不可重复用于其他视图模型。

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

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

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