Xamarin обновляет viewmodel с помощью команды - PullRequest
0 голосов
/ 30 сентября 2018

В настоящее время я не знаю, как решить мою проблему.Я пишу приложение с xamarin.forms.

У меня есть представление, которое содержит профиль пользователя.Например, есть запись с именем пользователя.Поле привязывается в режиме twoway к модели представления:

<Entry x:Name="givennameSurname"  Text="{Binding FullName, Mode=TwoWay}" />

Весь userprofile содержит несколько полей, которые проверяются с помощью поведения:

<behaviors:TelNumBehavior x:Name="NumValidatorUser" IsValid="{Binding Source={x:Reference root}, Path=BindingContext.UserTelNumBehavior, Mode=TwoWay }"></behaviors:TelNumBehavior>

Свойство isValid также привязано кмодель представления.

Чего я хочу достичь?Я хочу, чтобы, если одно из поведений подтвердило ввод ложным, пользовательский профиль не мог быть обновлен.

Поэтому я хотел создать команду для кнопки.У кнопки есть метод canExecute: этот метод проверяет логические значения в модели представления, если все они имеют значение true или false.Если true, я хочу принудительно обновить данные viewmodel из представления.Я использую это canExecute также для предотвращения нежелательных изменений, если пользовательский интерфейс находится в состоянии, что некоторые входные данные неверны:

    public string FullName
    {
        get => profile.GivenName;
        set
        {
            if (CanSave())
            {
                    profile.GivenName = value;
                    OnPropertyChanged();
            }
        }
    }

В чем проблема?Я изменяю ввод с помощью поведения, так что поведение говорит, что ввод неправильный.Затем я редактирую имя пользователя.Затем я изменяю ввод неправильного поведения на true.Теперь ввод имени пользователя не обновляется в viewmodel.Я хочу обновить его с помощью команды, но я не знаю, как принудительно обновить обновление от представления к модели представления.

1 Ответ

0 голосов
/ 01 октября 2018

Насколько я знаю, вам нужно написать, какое свойство вы меняете, в своем геттере и сеттере так:

OnPropertyChanged("FullName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...