Пример #1
0
        private DependencyPropertySetting CreateSetting(string name, DependencyProperty dependencyProperty)
        {
            DependencyPropertySetting _propertySetting = new DependencyPropertySetting(name, m_window, dependencyProperty);

            _propertySetting.ValueSaving += ValueSaving;
            return(_propertySetting);
        }
Пример #2
0
        public WindowSettings(Window window, string settingsKey) :
            base(settingsKey)
        {
            if (window == null)
            {
                throw new ArgumentNullException("window");
            }

            m_window       = window;
            UseLocation    = true;
            UseSize        = true;
            UseWindowState = true;
            SaveOnClose    = true;

            // settings
            m_topSetting    = CreateSetting("Window.Top", Window.TopProperty);
            m_leftSetting   = CreateSetting("Window.Left", Window.LeftProperty);
            m_widthSetting  = CreateSetting("Window.Width", FrameworkElement.WidthProperty);
            m_heightSetting = CreateSetting("Window.Height", FrameworkElement.HeightProperty);
            m_stateSetting  = CreateSetting("Window.WindowState", Window.WindowStateProperty);

            // subscribe to parent window's events
            m_window.SourceInitialized += WindowSourceInitialized;
            m_window.Initialized       += WindowInitialized;
            m_window.Loaded            += WindowLoaded;
            m_window.Closing           += WindowClosing;
        }
        private void Collect(DependencyObject currentObject, bool recursive)
        {
            foreach (object _child in LogicalTreeHelper.GetChildren(currentObject))
            {
                DependencyObject _dependencyObject = _child as DependencyObject;

                if (_dependencyObject == null)
                {
                    continue;
                }

                FrameworkElement _frameworkElement = _child as FrameworkElement;

                if (_frameworkElement != null)
                {
                    bool _add = m_dependencyProperty.OwnerType.IsAssignableFrom(_frameworkElement.GetType());

                    if (_add && string.IsNullOrEmpty(_frameworkElement.Name))
                    {
                        _add = false;
                        Debug.WriteLine("DependencyPropertySettingCollector: missing name for framework element " +
                                        _frameworkElement);
                    }

                    if (_add && !OnCollectingSetting(_frameworkElement))
                    {
                        _add = false;
                    }

                    if (_add)
                    {
                        string _settingName = string.Concat(_frameworkElement.Name, ".", m_dependencyProperty.Name);
                        DependencyPropertySetting _dependencyPropertySetting = new DependencyPropertySetting(_settingName, _frameworkElement, m_dependencyProperty);
                        _dependencyPropertySetting.DefaultValue = _dependencyPropertySetting.Value;
                        ApplicationSettings.Settings.Add(_dependencyPropertySetting);
                    }
                }

                if (recursive)
                {
                    Collect(_dependencyObject, true);
                }
            }
        }