/// <summary> /// Выгрузка дерева /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void uploadTagTreeButton_Click(object sender, RoutedEventArgs e) { //Игнорируем, если документ не открыт if (!_isOpenXmlDocument) { return; } //Запрос на выгрузку дерева MessageBoxResult result = MessageBox.Show("Выгрузить дерево и сохранить изменения в Xml файле?", "Внимание!!!", MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) { this.tagStorage.SaveXmlDocument(); //Выгрузка дерева в другом потоке Task.Factory.StartNew(() => { this.outTreeView.Dispatcher.Invoke(() => outTreeView.ItemsSource = null); }); //Документ закрыт _isOpenXmlDocument = false; //Зануляем инстансы tagStorage = null; tagItem = null; } }
/// <summary> /// Загрузка дерева /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void loadTagTreeButton_Click(object sender, RoutedEventArgs e) { //Инстансыруем классы tagStorage = new TagStorage(_fileName); tagItem = new TagItem(tagStorage.Root); //Создаем главную коллекцию CreateTagCollection(tagStorage.Root); //Привязываем коллекцию к TreeView в отдельном потоке Task.Factory.StartNew(() => outTreeView.Dispatcher.Invoke(() => outTreeView.ItemsSource = TagCollection)); //Документ открыт, если все в порядке if (tagStorage.Root != null) { _isOpenXmlDocument = true; } }