Как получить пароли из нескольких 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>

В самой команде уже идёт приведение типа массива и работа с полями пароля.

→ Ссылка