Exercise 1 Solution

You can use MVVM to separate views (user interface elements) from view models (functionality and business logic). This gives your applications a much better and more maintainable structure, which is particularly useful in large applications, such as those that have large teams of developers and designers.

Exercise 2 Solution

Modify the code for ButtonCommandHelper.cs so that it looks like the following:

public static class ButtonCommandHelper

   public static readonly DependencyProperty
      CommandParameterProperty =
            new PropertyMetadata(null));

   public static object GetCommandParameter(
      ButtonBase button)
      return button.GetValue(CommandParameterProperty);

   public static void SetCommandParameter(
      ButtonBase button, object commandParameter)
      button.SetValue(CommandParameterProperty, commandParameter);


   private static void OnButtonBaseClick(object sender, RoutedEventArgs args)
      var button = sender as ButtonBase;
      var command = GetCommand(button);

      var commandParameter = GetCommandParameter(button);
      if (command != null && command.CanExecute(commandParameter))

Exercise 3 Solution

Most unit test frameworks throw exceptions when tests fail, although in practice these exceptions are handled by the framework and converted into user-friendly output you can peruse.

Get Beginning Windows® Phone 7 Application Development: Building Windows® Phone Applications Using Silverlight® and XNA® now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.