/// <summary>
 /// Raise a Property Changed Event with a custom Event Args
 /// </summary>
 /// <param name="createEventArgs"></param>
 internal void RaisePropertyChanged(Func <System.ComponentModel.PropertyChangedEventArgs> createEventArgs)
 {
     System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChangedEventHandler;
     if (handler != null)
     {
         System.ComponentModel.PropertyChangedEventArgs eventArgs = createEventArgs();
         // Iterate for each Delegate logging each Excpetion we could receive
         foreach (Delegate d in handler.GetInvocationList())
         {
             d.DynamicInvoke(this, eventArgs);
         }
     }
 }