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