Как получить пароли из нескольких PasswordBox при реализации MVVM (смена пароля пользователем)
хочу реализовать окно смены пароля, используя MVVM. В окне есть 3 PasswordBox. Как мне вытянуть инфу из всех трёх в команду, чтобы не нарушать MVVM. Когда PasswordBox был 1, то я его передавал как CommandParameter
Command="{Binding AutorisationCommand}" CommandParameter="{Binding ElementName=pwdBox}"
Что делать в моем случае?
Ответы (1 шт):
Автор решения: Heksys
→ Ссылка
По итогу реализовал IMultiValueConverter и при помощи MultiBinding реализовал передачу паролей как массив. Класс конвертера:
internal class pwdConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
PasswordBox[] pwdBoxes = new PasswordBox[3];
pwdBoxes[0] = values[0] as PasswordBox;
pwdBoxes[1] = values[1] as PasswordBox;
pwdBoxes[2] = values[2] as PasswordBox;
return pwdBoxes;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
return null;
}
}
Код кнопки:
<Button Content="Подтвердить"
Grid.Column="0"
IsDefault="True"
Command="{Binding ConfirmChangePasswordCommand}">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource pwdConverter}">
<Binding ElementName="OldPwdBox"/>
<Binding ElementName="NewPwdBox"/>
<Binding ElementName="ConfirmNewPwdBox"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
В самой команде уже идёт приведение типа массива и работа с полями пароля.
