首页 > 解决方案 > 标签中的数据绑定问题文本未显示数据

问题描述

以下标签在运行时不显示数据<Label Text="{Binding Firstname}"/> 如果我在调试模式下运行代码并且如果我将标签更改为编辑器或其他内容,它会显示数据。请让我知道为什么会这样,我该如何解决。

私有字段背后的代码

    private string email;
    private string phone;
    private string firstname;
    private string lastname;

从FirebaseFirestore调用数据的方法

        public async Task GetDataAsync()
    {
       var user = await DependencyService.Get<IAccountService>().GetUserAsync();

        phone = user.Phone;
        email = user.Email;
        firstname = user.Firstname;
        lastname = user.Lastname;
    }

公共财产

     public string Firstname
    {
        get { return firstname; }
        set
        {
            firstname = value;
            OnPropertyChanged(nameof(Firstname));
        }
    }
    public string Lastname
    {
        get {return lastname;}
        set
        {
            lastname = value;
            OnPropertyChanged(nameof(Lastname));

        }
    }

    public string Email
    {
        set
        {
            if (email != value)
            {
                email = value;
                OnPropertyChanged("Email");
            }
        }
        get
        {
            return email;
        }
    }
    public string Phone
    {
        set
        {
            if (phone != value)
            {
                phone = value;
                OnPropertyChanged("Phone");
            }
        }
        get
        {
            return phone;
        }
    }

标签: xamarin.formsmvvm

解决方案


这一行:

firstname = user.Firstname;

必须改为:

Firstname = user.Firstname;

解释:

如果您不使用 Firstname 属性设置器,则OnPropertyChanged(nameof(Firstname));永远不会被调用。

因此 XAML 不知道该属性的值已更改。


推荐阅读