Bonjour.

Voici la problématique.

Je possède une vue diffusant une liste d'utilisateur, un champ pour le mot de passe ainsi qu'un bouton de validation.
Bien connu en WPF, une PasswordBox ne possède pas de DependencyProperty à ses propriétés Password et SecurePassword pour des raisons de sécurité. C'est pourquoi je ne veux pas utiliser les Behaviors que l'on trouve partout sur Internet enregistrant le mot de passe dans le ViewModel. C'est niet, que d'al, nada ...

Voici donc mon code actuel

Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<PasswordBox x:Name="passwordBox" />
<Button Content="Logged in"
            Command="{Binding Path=LoggedInCommand}"
            CommandParameter="{Binding ElementName=passwordBox, Path=SecurePassword}"/>

Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class UsersListViewModel
{
    public UsersListViewModel()
    {
        this.LoggedInCommand = new DelegateCommand<SecureString>(this.LoggedIn);
    }
 
    public DelegateCommand<SecureString> LoggedInCommand { get; private set; }
 
    public void LoggedIn(SecureString password)
    {
        ...
    }
}

Le problème est que le code comme ça me renvoi une SecureString totalement vide. De même si je veux récupérer la Propriété Password.

Par contre, envoyer le contrôle entier dans ma méthode me permet de récupérer les éléments dont j'ai besoin.

Ce n'est qu'un avis, mais c'est pas un peux lourd de balancer un contrôle complet .

Si quelqu'un connait la situation sans envoyer le contrôle complet et sans utilisé le fameux Behavior interdit je suis preneur.