这个问题已经在这里有一个答案:
我PasswordBox绑定到视图模型,如:
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;
}
它工作正常,以一种方式,即如果我进入里面查看密码,我可以从视图模型访问它,我的问题:我如何才能绑定的密码,以另一种方式,也就是说,如果我通过视图模型改变它,我想看到的在视图中改变。
错误的方法。 PasswordBox
部件是一个例外。
如果你要让它双向绑定,能够打破你的安全理念,因为它意味着RAM密码的地方将被保存为纯文本,在可变你的情况
private string password
直到最后一刻(真正的用户名/密码验证),总是试图通过密码((PasswordBox)o).SecurePassword
。是的,它打破了MVVM
模式,但这是安全的成本。