Xamarin使用命令更新viewmodel

时间:2018-09-30 12:30:00

标签: xamarin mvvm

目前,我不知道如何解决我的问题。我正在使用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。现在,用户名的输入不会在视图模型中刷新。我想用命令刷新它,但是我不知道如何强制从视图刷新到视图模型。

1 个答案:

答案 0 :(得分:0)

据我所知,您需要在getter和setter中编写要更改的属性,这样:

OnPropertyChanged("FullName");