title: Problems with Bindings in Xamarin Forms (MVVM)
body: <p>I am having some problems understanding xaml with mvvm. Sometimes works but others doesn't.</p>
  
  <p>ViewModel (implements INotifyPropertyChanged):</p>
  
  <pre><code>private Class1 firstClass;
  public Class1 FirstClass{
      get{return firstClass;}
      set{firstClass = value; OnPropertyChanged();}
  }
  
  private string name;
  public string Name{
      get{return name;}
      set{name = value; OnPropertyChanged();}
  }
  
  private string address;
  public string Address{
      get{return address;}
      set{address = value; OnPropertyChanged();}
  }
  </code></pre>
  
  <p>View:</p>
  
  <pre><code>private ViewModel vm;
  </code></pre>
  
  <p>In the View constructor:</p>
  
  <pre><code>vm = new ViewModel(id);
  BindingContext = vm;
  </code></pre>
  
  <p>OnAppearing (async):</p>
  
  <pre><code>base.OnAppearing();
  await vm.LoadDataAsync();
  lAddress.SetBinding(Label.TextProperty, new Binding("Address");
  </code></pre>
  
  <ul>
  <li><p>If I set the BindingContext in xaml and remove it from the
  constructor, it does not work. </p></li>
  <li><p>If I set the Binding on the Address label in xaml and remove it from      the code behind, it does not work.</p></li>
  <li><p>If I try to use Name as the Title of the page, it does not work. </p></li>
  <li><p>In any of these cases I am not getting any error like 'Binding: property not found on BindingContext' so I understand that they are being found but maybe they are empty.</p></li>
  <li><p>If I modify a property from Class1, it does not appear on the page.
  Can I assume that the reason is that Class does not implement
  INotifyPropertyChanged?</p></li>
  <li><p>Is it better or advisable to LoadData in VM constructor (Task.Run) or on Page.OnAppearing(await vm.LoadData())?</p></li>
  </ul>
  
  <p>Could anybody provide a bit of guidance?</p>
  
  <p>EDIT:</p>
  
  <p><a href="https://i.stack.imgur.com/uJkCF.png" rel="nofollow noreferrer">XAML code (sorry, could not add the code itself)</a></p>