两种方式绑定到PasswordBox

时间:2019-02-03 12:42:46

标签: c# wpf xaml data-binding mvvm-light

我的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中访问它, 我的问题:如何将密码绑定到另一种方式,即如果我通过ViewModel更改密码,我想在视图中查看更改。

1 个答案:

答案 0 :(得分:1)

错误的方式。 @sse.before_request def check_access(): channel = request.args.get("channel") or "sse" if channel.startswith("private."): if current_user.is_anonymous: abort(401) user_id = channel[8:] if current_user.get_id() != user_id: abort(403) 部件是一个例外。

如果要使其具有双向可绑定性,则会破坏安全性概念,因为这意味着RAM密码中的某处将作为PLAIN文本存储,在您的情况下为变量

PasswordBox

直到最后一刻(真实的用户名/密码验证),始终尝试以private string password 的身份传递密码。是的,它打破了((PasswordBox)o).SecurePassword模式,但这是安全性的代价。