目前,我不知道如何解决我的问题。我正在使用xamarin.forms编写应用程序。
我有一个包含用户的用户配置文件的视图。例如,有一个带有用户名的条目。该字段以双向方式绑定到视图模型:
<Entry x:Name="givennameSurname" Text="{Binding FullName, Mode=TwoWay}" />
整个用户配置文件包含一些已通过行为验证的字段:
<behaviors:TelNumBehavior x:Name="NumValidatorUser" IsValid="{Binding Source={x:Reference root}, Path=BindingContext.UserTelNumBehavior, Mode=TwoWay }"></behaviors:TelNumBehavior>
isValid属性也绑定到视图模型。
我想实现什么?我希望,如果其中一种行为将输入验证为false,则无法更新用户配置文件。
所以我想在按钮上创建一个命令。该按钮具有canExecute方法:此方法检查视图模型中的布尔值是否为true或false。如果为true,我想从视图中强制刷新viewmodel的数据。我还使用了canExecute来防止不必要的更改,如果UI处于状态,则表明某些输入错误:
public string FullName
{
get => profile.GivenName;
set
{
if (CanSave())
{
profile.GivenName = value;
OnPropertyChanged();
}
}
}
出什么问题了? 我用行为更改输入,以便该行为表明输入错误。然后,我编辑用户名。然后,我将错误行为的输入更改为true。现在,用户名的输入不会在视图模型中刷新。我想用命令刷新它,但是我不知道如何强制从视图刷新到视图模型。
答案 0 :(得分:0)
据我所知,您需要在getter和setter中编写要更改的属性,这样:
OnPropertyChanged("FullName");