// Добавление коренного компонента private void NewRootComponent(object sender, RoutedEventArgs e) { // Использование диалога при переименовании файла для создание нового корневого компонента - используя другой конструктор класса Dialog_RenameComponent dialog_NewRootComponent = new Dialog_RenameComponent(componentsAllQuery); dialog_NewRootComponent.Owner = Window.GetWindow(this); dialog_NewRootComponent.ShowDialog(); if (dialog_NewRootComponent.componentNewName != null) { // Получение максимального id в таблице // Индекс компонента должен быть больше, чем все предыдущие, во избежание перезаписи таблицы // Id нового компонента будет задано автоматически при db.ComponentsUniques.InsertOnSubmit(...) long currentAllComponentsMaxID = componentsAllQuery.AsQueryable().Cast <ComponentsAll>().Max(t => t.Id); // Создание нового компонента таблицы ComponentsAll ComponentsAll newComponentAll = new ComponentsAll() { // Индекс компонента должен быть больше, чем все предыдущие, во избежание перезаписи таблицы Id = currentAllComponentsMaxID + 1, ParentId = 0, ComponentId = 0, Name = dialog_NewRootComponent.componentNewName, Amount = 1 }; // Сохранение изменений в БД db.ComponentsAlls.InsertOnSubmit(newComponentAll); db.SubmitChanges(); // Добавление нового элемента TreeViewItem по новому компоненту TreeViewItem newitem = CreateNewItemFromComponent(newComponentAll); // Добавление нового элемента TreeViewItem в корень treeView treeView.Items.Add(newitem); } // Сохранение изменений в БД db.SubmitChanges(); // Сворачивание TreeView TreeViewCollapseAll(); // Разворачивание компонентов первого уровня foreach (TreeViewItem item in treeView.Items) { item.IsExpanded = true; } }
// Переименование компонента private void RenameComponent(object sender, RoutedEventArgs e) { // Получение выбранного узла дерева TreeViewItem selectedItem = (TreeViewItem)treeView.SelectedItem; // Получение компонента по тегу данного узла ComponentsAll currentComponent = componentsAllQuery.AsQueryable().Cast <ComponentsAll>().Where(x => x.Id == (long)selectedItem.Tag).First(); // Создание диалога с изменением компонента Dialog_RenameComponent dialog_RenameComponent = new Dialog_RenameComponent(componentsUniqueQuery, currentComponent); dialog_RenameComponent.Owner = Window.GetWindow(this); dialog_RenameComponent.ShowDialog(); // Объект из диалога существует if (dialog_RenameComponent.componentNewName != null) { // Дочерний элемент treeView if (currentComponent.ParentId != 0) { // Нахождение уникального компонента по ComponentId текущего компонента и замена в нем имени componentsUniqueQuery.AsQueryable().Cast <ComponentsUnique>() .Where(x => x.Id == currentComponent.ComponentId).First().Name = dialog_RenameComponent.componentNewName; } // Корневой элемент treeView else { // Нахождение компонента по старому имени и замена в нем имени componentsAllQuery.AsQueryable().Cast <ComponentsAll>() .Where(x => x.Name == dialog_RenameComponent.componentOldName).First().Name = dialog_RenameComponent.componentNewName; } } // Сохранение изменений в БД db.SubmitChanges(); // Сворачивание TreeView TreeViewCollapseAll(); // Лист Id родительских компонентов данного компонента List <long> parensIDList = new List <long>(); parensIDList = GetComponentsParentsIds(currentComponent, ref parensIDList, false).OrderBy(u => u).ToList(); // Обновление treeView с раскрытием до текущего компонента RefreshTreeView(parensIDList); }