PasswordBox avec MVVM
Salut les gens stackoverflow. Je travaille avec MVVM, j'ai ViewModel appel UserViewModel avec un Mot de passe. Dans le Vue avoir un contrôle PasswordBox.
<PasswordBox x:Name="txtPassword" Password="{Binding Password}" />
Mais ce xaml ne fonctionnent pas. Comment voulez-vous faire la liaison?? De l'aide s'il vous plaît!!
- Avez-vous fait en sorte que le datacontext de la fenêtre est définie sur le modèle de vue. Vous avez besoin d'un peu plus de code pour que nous puissions comprendre votre problème.
- DataContext c'est ok. d'autres propriétés bien fonctionner, mais avec PasswordBox je ne peux pas.
Vous devez vous connecter pour publier un commentaire.
Pour des raisons de sécurité, le Mot de passe de propriété n'est pas une propriété de dépendance et, par conséquent, vous ne pouvez pas se lier à elle. Malheureusement, vous aurez besoin pour effectuer la liaison dans le code de la méthode à l'ancienne (registre des OnPropertyChanged de l'événement et de la mise à jour de la valeur par le biais du code...)
J'rapide recherche m'amène à ce blog qui montre comment écrire une propriété attachée à contourner le problème. Si cela vaut la peine de faire ou de ne pas bien dépend vraiment de votre aversion pour le code-behind.
Vous pouvez toujours écrire un contrôle qui entoure le Mot de passe et ajoute une dépendance de la propriété pour la propriété de Mot de passe.
Je voudrais juste utiliser le code derrière, mais si vous devez vous pouvez faire quelque chose comme:
Il y a un problème avec le BindablePasswordBox. Il ne fonctionne que dans un sens, PasswordBox à PasswordProperty. Ci-dessous est une version modifiée de ce qui fonctionne dans les deux directions. Elle enregistre un PropertyChangedCallback et les mises à jour de la PasswordBox du Mot de passe lorsqu'il est appelé.
J'espère que quelqu'un trouve cela utile.
Pour éviter d'avoir le mot de passe disponible dans la mémoire sous forme de texte brut à tout moment, j'ai la valeur d'un paramètre à ma commande.
Ensuite dans mon modèle de vue.
Alors qu'il aurait du sens pour fournir la SecurePassword directement à partir de la liaison, il semble toujours fournir une valeur vide. Donc cela ne fonctionne PAS:
Vérifier un autre thread sur la zone mot de passe.
De son mieux de ne pas garder le mot de passe sur n'importe quel DP ou de propriété publique.
Autre thread sur passwordbox