我的PasswordBox绑定到ViewModel的方式如下:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
.
.
.
<PasswordBox x:Name="pwbox" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="PasswordChanged" >
<i:InvokeCommandAction Command="{Binding PasswordChangedCommand }" CommandParameter="{Binding ElementName=pwbox, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</PasswordBox>在视图模型中:
public ICommand PasswordChangedCommand { get; private set; }
private string password;
public MyVMClass()
{
PasswordChangedCommand = new RelayCommand<object>(PasswordChangedMethod);
}
private void PasswordChangedMethod(object obj)
{
password = ((System.Windows.Controls.PasswordBox)obj).Password;
}它以一种方式工作得很好,即如果我在视图中输入密码,我可以从视图模型访问它,我的问题是:如何将密码绑定到另一种方式,即如果我通过viewmodel更改它,我希望看到视图中的更改。
发布于 2019-02-03 21:28:23
走错路了。PasswordBox组件是一个例外。
如果您打算让它成为双向可绑定,那么您就破坏了安全概念,因为这意味着在RAM中的某个地方,密码将以纯文本的形式存储,在您的例子中,密码将以变量的形式存储
private string password直到最后一刻(真实用户名/密码验证),始终尝试将密码作为((PasswordBox)o).SecurePassword传递。是的,它打破了MVVM模式,但这是安全成本。
https://stackoverflow.com/questions/54502958
复制相似问题