private static void OnCollectedSettingChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            FrameworkElement _frameworkElement = dependencyObject as FrameworkElement;

            if (_frameworkElement == null)
            {
                Debug.WriteLine("FrameworkElementSettings: invalid framework element");
                return;
            }

            DependencyProperty _dependencyProperty = e.NewValue as DependencyProperty;

            if (_dependencyProperty == null)
            {
                Debug.WriteLine("FrameworkElementSettings: missing dependency property");
                return;
            }

            // search the framework element settings
            FrameworkElementSettings _frameworkElementSettings =
                _frameworkElement.ReadLocalValue(DependencyPropertySetting.ApplicationSettingsProperty) as
                FrameworkElementSettings;

            if (_frameworkElementSettings == null)
            {
                Debug.WriteLine("FrameworkElementSettings: missing framework element settings in element " +
                                _frameworkElement);
                return;
            }

            DependencyPropertySettingCollector _collector = new DependencyPropertySettingCollector(_frameworkElement, _dependencyProperty);

            _frameworkElementSettings.SettingCollectors.Add(_collector);
        }
        private static void OnFrameworkElementSettingsChanged(DependencyObject dependencyObject,
                                                              DependencyPropertyChangedEventArgs e)
        {
            FrameworkElement _frameworkElement = dependencyObject as FrameworkElement;

            if (_frameworkElement == null)
            {
                Debug.WriteLine("FrameworkElementSettings: invalid framework element");
                return;
            }

            if (_frameworkElement.GetValue(DependencyPropertySetting.ApplicationSettingsProperty) != null)
            {
                return; // framework-element contains already an application setting
            }

            string _settingsKey = e.NewValue as string;

            if (string.IsNullOrEmpty(_settingsKey))
            {
                Debug.WriteLine("FrameworkElementSettings: missing framework element settings key");
                return;
            }

            // create and attach the application settings to the framework-element
            FrameworkElementSettings _frameworkElementSettings = new FrameworkElementSettings(_frameworkElement, _settingsKey);

            _frameworkElement.SetValue(DependencyPropertySetting.ApplicationSettingsProperty, _frameworkElementSettings);
        }