private static void OnCultureChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ICultureAware listener = d as ICultureAware;

            if (listener == null)
            {
                return;
            }

            var oldCulture = (CultureInfo)e.OldValue;
            var newCulture = (CultureInfo)e.NewValue;

            listener.OnCultureChanged(oldCulture, newCulture);
        }
        private static void OnCultureNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ICultureAware listener = d as ICultureAware;

            if (listener == null)
            {
                return;
            }

            var oldCultureName = (string)e.OldValue;
            var newCultureName = (string)e.NewValue;

            CultureInfo oldCulture = null;
            CultureInfo newCulture = null;

            try
            {
                if (!string.IsNullOrEmpty(oldCultureName))
                {
                    oldCulture = new CultureInfo(oldCultureName);
                }
                if (!string.IsNullOrEmpty(newCultureName))
                {
                    newCulture = new CultureInfo(newCultureName);
                }
            }
            catch (CultureNotFoundException)
            {
                if (DesignMode.DesignModeEnabled)
                {
                    // Prevent the exception at design-time while the user is typing.
                    return;
                }

                throw;
            }
            catch (ArgumentNullException)
            {
                if (DesignMode.DesignModeEnabled)
                {
                    // Prevent the exception at design-time while the user is typing.
                    return;
                }

                throw;
            }

            listener.OnCultureChanged(oldCulture, newCulture);
        }