绑定到对象的属性

问题描述

我有一个标签,我想将文本绑定到对象的属性

public class MainCar: INotifyPropertyChanged
    {
      
        string typeCar;
        public string TypeCar
        {
            set
            {
                if (typeCar != value)
                {
                    typeCar = value;
                    OnPropertyChanged("TypeCar");

                }
            }
            get
            {
                return typeCar;
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(propertyName));
        }
    }

在我的Xaml代码中,我有一个标签,但我不明白如何将我的Label的文本绑定到对象的属性TypeCar

XAML代码

 <Label x:Name="label" FontSize="Large" Text="" />

隐藏代码

 public Car_add()
        {
            NavigationPage.SetHasNavigationBar(this,false);

            InitializeComponent();
            this.BindingContext = new TypesCar();
           
        }

viewmodeL类别

公共类TypesCar {

    public TypesCar()
    {
        var vm = new MainCar() { TypeCar = "Ford" };
     }

解决方法

这很好documented

<Label x:Name="label" FontSize="Large" Text="{Binding TypeCar}" />

然后在后面的代码中

var vm = new MainCar() { TypeCar = "Ford" };
this.BindingContext = vm;

或者,如果您要绑定到“同一页面”上的某个属性,而不是一个VM,则

this.BindingContext = this;

请注意,如果您希望UI随着VM的更改而更新,则VM必须实现INotifyPropertyChanged