private void _appSettings_AfterConfigurationObjectMemberSet(object sender, ChoConfigurationObjectMemberEventArgs e) { if (_wndLoaded) { //IsDirty = true; } this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { txtRoboCopyCmd.Text = _appSettings.GetCmdLineText(); })); }
private void MyWindow_Loaded(object sender1, RoutedEventArgs e1) { _bindObj = new ChoWPFBindableConfigObject <ChoAppSettings>(); _appSettings = _bindObj.UnderlyingSource; _appSettings.Init(); if (!SettingsFilePath.IsNullOrWhiteSpace() && File.Exists(SettingsFilePath)) { _appSettings.LoadXml(File.ReadAllText(SettingsFilePath)); } else { _appSettings.Reset(); } this.DataContext = _appSettings; _appSettings.BeforeConfigurationObjectLoaded += ((o, e) => { e.Cancel = (bool)this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Func <bool>(() => { if (IsDirty) { if (MessageBox.Show("Configuration settings has been modified outside of the tool. {0}Do you want to reload it and lose the changes made in the tool?".FormatString(Environment.NewLine), Title, MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { return(false); } else { return(true); } } return(false); })); }); _appSettings.AfterConfigurationObjectMemberSet += ((o, e) => { if (_wndLoaded) { IsDirty = true; } this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { txtRoboCopyCmd.Text = _appSettings.GetCmdLineText(); })); }); _appSettings.ConfigurationObjectMemberLoadError += _appSettings_ConfigurationObjectMemberLoadError; _appSettings.AfterConfigurationObjectPersisted += _appSettings_AfterConfigurationObjectPersisted; _appSettings.AfterConfigurationObjectLoaded += ((o, e) => { if (_wndLoaded) { this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { this.DataContext = null; this.DataContext = _appSettings; txtRoboCopyCmd.Text = _appSettings.GetCmdLineText(); IsDirty = false; })); } else { this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { txtRoboCopyCmd.Text = _appSettings.GetCmdLineText(); })); } }); _mainUIThread = Thread.CurrentThread; _dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); _dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); _dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000); _dispatcherTimer.Start(); string x = _appSettings.SourceDirectory; ChoShellExtCmdLineArgs cmdLineArgs = new ChoShellExtCmdLineArgs(); if (!cmdLineArgs.Directory.IsNullOrWhiteSpace()) { _appSettings.SourceDirectory = cmdLineArgs.Directory; } IsDirty = false; }