【问题标题】:Xamarin update viewmodel with commandXamarin 使用命令更新视图模型
【发布时间】:2018-09-30 12:30:00
【问题描述】:

目前我不知道如何解决我的问题。我正在用 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 方法:该方法检查视图模型中的布尔值是真还是假。如果为真,我想强制从视图中刷新视图模型的数据。我也使用 canExecute 来防止不必要的更改,如果 UI 处于状态,则某些输入是错误的:

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

有什么问题? 我用一种行为改变了输入,所以行为表明输入是错误的。然后我编辑用户名。然后我将错误行为的输入更改为真。现在用户名的输入不会在视图模型中刷新。我想用命令刷新它,但我不知道如何强制从视图刷新到视图模型。

【问题讨论】:

标签: xamarin mvvm


【解决方案1】:

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

OnPropertyChanged("FullName");

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 2020-10-28
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多