private DependencyPropertySetting CreateSetting(string name, DependencyProperty dependencyProperty) { DependencyPropertySetting _propertySetting = new DependencyPropertySetting(name, m_window, dependencyProperty); _propertySetting.ValueSaving += ValueSaving; return(_propertySetting); }
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); } } }