[Example 3 - Introducing Commands and two-way binding]

MainViewModel.cs:
 * We now add another bound property to hold the user's input.
 * We add the CheckIfInputIsAPalindromeCommand property of type ICommand.  All commands must implement ICommand - but it would be really annoying if we had to create a separate class manually for every single command. So...
 * MVVM Light Toolkit to the rescue!  In the constructor, we initialize the CheckIfInputIsAPalindromeCommand to an instance of RelayCommand.  RelayCommand is provided by the toolkit, and takes any no-arg action as an argument. RelayCommand can also take a strongly typed CommandParameter (not shown in this example).  Here, since the command implementation is minimal, we simply use an inline lambda expression.

MainPage.xaml:
 * Many of the changes here are layout related.  One of the things I appreciate about XAML is how easy it is to create layouts that respond intelligently to changes in window size.  Go ahead and try resizing the window when you run it.
 * Note how we added a text box to receive user input.  Take special note of the binding expression "{Binding Input, Mode=TwoWay}".  We must specify the TwoWay mode, or the user's input will not be bound back to the viewmodel.
 * Note how we add a button, and bind our CheckIfInputIsAPalindromeCommand property to its Command.  Now when we click the button, our command will be executed, and the TextBlock will be updated.