Several (newbie) questions:
1) I see a lot of
public Person SelectedPerson { get; set; }
I am assuming this does NOT fire a property
Here's a link to a good article introducing the MVVM pattern.
Specifically, if you look at the RelayCommand class, it does a nice job of implementing an ICommand object and allowing you to specify a predicate to evaluate whether or not the Command may be executed.
The evaluation of the canExecute predicate in the RelayCommand saves you from binding a separate property to the IsEnabled property of the Button.
I typically follow the example in the article of implementing a private property which supplies the Boolean value for the canExecute predicate.
That article was a good help to me to get started with the pattern.