Search code examples
xamlxamarinxamarin.formsdata-bindingxamarin.android

Binding to a property of the object


I have a Label and I want to bind Text to a property of an object

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));
        }
    }

In my Xaml code I have a label and I do not understand how to bind Text of my Label to object`s property TypeCar

XAML CODE

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

BEHIND CODE

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

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

VIEWMODEL CLASS

public class TypesCar {

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

Solution

  • this is very well documented

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

    then in the code behind

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

    OR, if you are binding to a property on the SAME PAGE and NOT A VM

    this.BindingContext = this;
    

    note that if you want your UI to update as your VM changes, the VM must implement INotifyPropertyChanged