title: CustomValidation attribute doesn't seem to work
body: <p>I have a simple test page in my Silverlight 4 application in which I'm trying to get a custom validation rule to fire.</p>
  
  <p>I have a TextBox and a Button, and I am showing the validation results in a TextBlock.  My view model has a Name property, which is bound the the Text property of the TextBox.  I have two validation attributes on the Name property,  <code>[Required]</code> and <code>[CustomValidation]</code>.</p>
  
  <p>When I hit the Submit button, the Required validator fires correctly, but the breakpoint inside the validation method of my custom validator never gets hit.  I can't see why this is, as I think I have followed MS's example very carefully: <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute(v=vs.95).aspx" rel="noreferrer">http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute(v=vs.95).aspx</a></p>
  
  <p>Here is the code for the view model:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel.DataAnnotations;
  using System.Linq;
  using GalaSoft.MvvmLight.Command;
  
  namespace MyProject
  {
      // custom validation class
      public class StartsCapitalValidator
      {
          public static ValidationResult IsValid(string value)
          {
              // this code never gets hit
              if (value.Length &gt; 0)
              {
                  var valid = (value[0].ToString() == value[0].ToString().ToUpper());
                  if (!valid)
                      return new ValidationResult("Name must start with capital letter");
              }
              return ValidationResult.Success;
          }
      }
  
      // my view model
      public class ValidationTestViewModel : ViewModelBase
      {
          // the property to be validated
          string _name;
          [Required]
          [CustomValidation(typeof(StartsCapitalValidator), "IsValid")]
          public string Name
          {
              get { return _name; }
              set { SetProperty(ref _name, value, () =&gt; Name); }
          }
  
          string _result;
          public string Result
          {
              get { return _result; }
              private set { SetProperty(ref _result, value, () =&gt; Result); }
          }
  
          public RelayCommand SubmitCommand { get; private set; }
  
          public ValidationTestViewModel()
          {
              SubmitCommand = new RelayCommand(Submit);
          }
  
          void Submit()
          {
              // perform validation when the user clicks the Submit button
              var errors = new List&lt;ValidationResult&gt;();
              if (!Validator.TryValidateObject(this, new ValidationContext(this, null, null), errors))
              {
                  // we only ever get here from the Required validation, never from the CustomValidator
                  Result = String.Format("{0} error(s):\n{1}",
                      errors.Count,
                      String.Join("\n", errors.Select(e =&gt; e.ErrorMessage)));
              }
              else
              {
                  Result = "Valid";
              }
          }
      }
  }
  </code></pre>
  
  <p>Here is the view:</p>
  
  <pre><code>&lt;navigation:Page x:Class="Data.Byldr.Application.Views.ValidationTest" 
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"&gt;
      &lt;Grid Width="400"&gt;
      &lt;StackPanel&gt;
          &lt;TextBox Text="{Binding Name, Mode=TwoWay}" /&gt;
          &lt;Button Command="{Binding SubmitCommand}" Content="Submit" /&gt;
          &lt;TextBlock Text="{Binding Result}" /&gt;
      &lt;/StackPanel&gt;
      &lt;/Grid&gt;
  &lt;/navigation:Page&gt;
  </code></pre>