/// <summary>
        /// Safe way to invoke the event one time for each passed argument. (Only invokes if it has any event handlers).
        /// </summary>
        /// <param name="eventHandler">The event handler.</param>
        /// <param name="sender">The sender.</param>
        /// <param name="eventArgs">The event arguments.</param>
        /// <returns>The event handler.</returns>
        public static PropertyChangedEventHandler InvokeEvent(this PropertyChangedEventHandler eventHandler, object sender, params string[] eventArgs)
        {
            var propertyChangedEventArgs = new List <PropertyChangedEventArgs>();

            eventArgs.ForEach(x => propertyChangedEventArgs.Add(new PropertyChangedEventArgs(x)));

            return(eventHandler.InvokeEvent(sender, propertyChangedEventArgs.ToArray()));
        }
        /// <summary>
        /// Safe way to invoke the event one time for each passed event argument. (Only invokes if it has any event handlers).
        /// </summary>
        /// <param name="eventHandler">The event handler.</param>
        /// <param name="sender">The sender.</param>
        /// <param name="eventArgs">The event arguments.</param>
        /// <returns>The event handler.</returns>
        public static PropertyChangedEventHandler InvokeEvent(this PropertyChangedEventHandler eventHandler, object sender, params PropertyChangedEventArgs[] eventArgs)
        {
            eventArgs.ForEach(x => eventHandler.InvokeEvent(sender, x));

            return(eventHandler);
        }
        /// <summary>
        /// Safe way to invoke the event one time for each passed property. (Only invokes if it has any event handlers).
        /// </summary>
        /// <param name="eventHandler">The event handler.</param>
        /// <param name="sender">The sender.</param>
        /// <param name="expressions">The properties triggering the expression.</param>
        /// <returns>The event handler.</returns>
        public static PropertyChangedEventHandler InvokeEvent(this PropertyChangedEventHandler eventHandler, object sender, params Expression <Func <object> >[] expressions)
        {
            expressions.ForEach(x => eventHandler.InvokeEvent(sender, new PropertyChangedEventArgs(x.GetPropertyName())));

            return(eventHandler);
        }