title: Xamarin.Forms binding not updating after initial value
body: <p>I'm binding the title of my Xamarin.Forms.ContentPage to a property <code>BuggyTitle</code> in my view model (VM). The VM derives from MvxViewModel. Here's the simplified version:</p>
  
  <p>BuggyPage.xaml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;local:ContentPage Title="{Binding BuggyTitle}"
              xmlns="http://xamarin.com/schemas/2014/forms" 
              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
              x:Class="MyProject.BuggyPage"
              xmlns:local="clr-namespace:Xamarin.Forms;assembly=MyProject"&gt;
  &lt;ContentPage.Content NavigationPage.HasNavigationBar="false"&gt;
          &lt;Grid&gt;
              &lt;ScrollView&gt;
                  &lt;!--and so on--&gt;
  &lt;/ContentPage.Content&gt;
  &lt;/local:ContentPage&gt;
  </code></pre>
  
  <p>BuggyViewModel.cs:</p>
  
  <pre><code>namespace MyProject
  {
      [ImplementPropertyChanged]
      public class BuggyViewModel : MvxViewModel
      {
        private Random _random;
  
        public string BuggyTitle {get; set;}
  
        public BuggyViewModel()
        {
            _random = new Random();
        }
  
        public override void Start()
          {
              base.Start();
              BuggyTitle = "" + _random.Next(1000);
              RaisePropertyChanged("BuggyTitle"); // this seems to make no difference
          }
      }
  }
  </code></pre>
  
  <p>There's not much going on in the code behind other than a call to <code>InitializeComponent()</code> in the constructor.</p>
  
  <p>The page is mapped to the VM generically in my project (not actually 'my' project, it's existing design), and it boils down to these (again, simplified) lines of code:</p>
  
  <pre><code>public static Page CreatePage(MvxViewModelRequest request)
  {
      var viewModelName = request.ViewModelType.Name;
      var pageName = viewModelName.Replace ("ViewModel", "Page");
      var pageType = (typeof (MvxPagePresentationHelpers)).GetTypeInfo ().Assembly.CreatableTypes().FirstOrDefault(t =&gt; t.Name == pageName);
      var viewModelLoader = Mvx.Resolve&lt;IMvxViewModelLoader&gt;();
      var viewModel = viewModelLoader.LoadViewModel(request, null);
      var page = Activator.CreateInstance(pageType) as Page;
      page.BindingContext = viewModel;
  
     return page;
  }
  </code></pre>
  
  <p>The problem:</p>
  
  <p>When <code>BuggyPage</code> loads, I initially get the correct value for the title. Whenever it is displayed after that, even though I can see in the debugger that <code>BuggyTitle</code> is getting updated correctly, the change does not appear in the page.</p>
  
  <p>Question:</p>
  
  <p>Why don't updates to <code>BuggyTitle</code> get reflected in the page? </p>
  
  <p><strong>Edit 1:</strong></p>
  
  <p>To further describe the weirdness, I added a <code>Label</code> to my <code>ContentPage</code>, with <code>x:Name="BuggyLabel"</code> and <code>Text="{Binding BuggyLabelText}"</code>.
  In my code-behind, I added this:</p>
  
  <pre><code>var binding_context = (BindingContext as BuggyViewModel);
  if (binding_context != null)
  {
      BuggyLabel.Text = binding_context.BuggyLabelText;
  }
  </code></pre>
  
  <p>I set a breakpoint at <code>BuggyLabel.Text =</code>. It gets hit every time the page loads, and <code>BuggyLabel.Text</code> already seems to have the correct value (i.e, whatever <code>binding_context.BuggyLabelText</code> is set to). However, the actual page displayed only ever shows what the text in this label is initially set to.</p>
  
  <p>And yes, have clean/built about a million times.</p>
  
  <p><strong>Edit 2 (further weirdness):</strong></p>
  
  <p>I put this in the code-behind so that it runs during page load:</p>
  
  <pre><code>var binding_context = (BindingContext as BuggyViewModel);
  if (binding_context != null)
  {
      Device.BeginInvokeOnMainThread(() =&gt;
      {
          binding_context.RefreshTitleCommand.Execute(null);
      });
  }
  </code></pre>
  
  <p>This again changes values in the debugger, but these changes don't get reflected in the displayed page.</p>
  
  <p>I then added a button to the page and bound it to <code>RefreshTitleCommand</code>, and wham! the page updates its display.</p>
  
  <p>Unfortunately I can't use this. Not only is it incredibly hackish, I can't have the user pressing buttons to have the page display what it's meant to on load.</p>
  
  <p>I wonder if there's some caching going on with MvvmCross or Xamarin.</p>