双向结合PasswordBox [复制]

问题描述 投票:0回答:1

这个问题已经在这里有一个答案:

我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;
}

它工作正常,以一种方式,即如果我进入里面查看密码,我可以从视图模型访问它,我的问题:我如何才能绑定的密码,以另一种方式,也就是说,如果我通过视图模型改变它,我想看到的在视图中改变。

c# wpf xaml data-binding mvvm-light
1个回答
1
投票

错误的方法。 PasswordBox部件是一个例外。

如果你要让它双向绑定,能够打破你的安全理念,因为它意味着RAM密码的地方将被保存为纯文本,在可变你的情况

private string password

直到最后一刻(真正的用户名/密码验证),总是试图通过密码((PasswordBox)o).SecurePassword。是的,它打破了MVVM模式,但这是安全的成本。

© www.soinside.com 2019 - 2024. All rights reserved.