В настоящее время я не знаю, как решить мою проблему.Я пишу приложение с 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.Я хочу обновить его с помощью команды, но я не знаю, как принудительно обновить обновление от представления к модели представления.