/// <summary> /// 修改或新添标签标注 /// </summary> /// <param name="path">标注路径</param> /// <param name="isNew">是否是新建</param> public static void AllOrEditTag(string path, bool isNew) { SelectTagWindow window = new SelectTagWindow(); bool? dialogResult = window.ShowDialog(); if (dialogResult == true) { TagBean tagBean = window.tagBean; if (tagBean.Id == 0) { DirTagMapper.DeleteOneByPath(path); } if (isNew) { DirTagMapper.AddOne(new DirTagBean() { Path = path, TagId = tagBean.Id, }); } else { DirTagMapper.EditOneByPath(path, tagBean.Id); } //刷新标签缓存 TagSupport.SetTagSort(); } }
//删除路径 public void DeletePath_Click(object sender, RoutedEventArgs e) { Grid grid = VisualTreeHelper.GetParent(sender as UIElement) as Grid; DirTagMapper.DeleteOneById(uint.Parse(grid.Uid)); pathList.ItemsSource = TagService.GetPathItemSource(selectedTagId); }
/// <summary> /// 递归删除标签及其所有子标签 /// </summary> /// <param name="tagId"></param> public static void DeleteTag(uint tagId) { TagBean[] beanList = TagMapper.GetChildTag(tagId); foreach (TagBean bean in beanList) { DeleteTag(bean.Id); } TagMapper.DeleteOne(tagId); DirTagMapper.DeleteByTagId(tagId); }
//添加或修改标签的地址 public void EditedItem_MouseDown(object sender, MouseButtonEventArgs e) { if (isInIt) { return; } //取消注册事件 MouseLeftButtonDown -= EditedItem_MouseDown; pathList.MouseLeftButtonDown -= EditedItem_MouseDown; tagName.MouseLeftButtonDown -= EditedItem_MouseDown; pathGrid.MouseLeftButtonDown -= EditedItem_MouseDown; //获取相关信息 string editedGridUid = editedGrid.Uid; string editedPath = null; foreach (UIElement element in editedGrid.Children) { if (element is TextBox) { editedPath = (element as TextBox).Text; } } if (editedPath != string.Empty) { //添加 if (editedGridUid == "newPath") { DirTagMapper.AddOne(new DirTagBean() { TagId = selectedTagId, Path = editedPath, }); } //修改 else { DirTagMapper.EditOneById(uint.Parse(editedGridUid), editedPath); } } TagSupport.SetTagSort(); int index = pathList.SelectedIndex; pathList.ItemsSource = TagService.GetPathItemSource(selectedTagId); pathList.SelectedIndex = index; isInIt = true; //设置为true,关闭该方法的相应 }
private static void SetTagSortAsyn() { DirTagBean[] beans = DirTagMapper.GetAll(); //根据标注长度进行排序 DirTagBean bean = null; int count = beans.Length; for (int r = 0; r < count; r++) { for (int i = 0; i < count - 1; i++) { string a = beans[i].Path; string b = beans[i + 1].Path; if (a.Length < b.Length) { bean = beans[i]; beans[i] = beans[i + 1]; beans[i + 1] = bean; } } } InternalStorage.Set(InternalStorage.Domain.tag, "tagSort", beans); }
/// <summary> /// 获取地址列表 /// </summary> /// <param name="tagId">标签id</param> public static Grid[] GetPathItemSource(uint tagId) { MainWindow main = Application.Current.MainWindow as MainWindow; DirTagBean[] beans = DirTagMapper.GetAllByTag(tagId); int count = beans.Length; Grid[] items = new Grid[count + 1]; for (int i = 0; i < count; i++) { TextBlock showPath = new TextBlock() { FontSize = 16, Text = beans[i].Path, }; showPath.MouseLeftButtonDown += main.tagPage.Path_Click; showPath.MouseLeftButtonDown += main.tagPage.EditedItem_MouseDown; TextBox editPath = new TextBox() { FontSize = 16, Margin = new Thickness(0, 0, 40, 0), Text = beans[i].Path, Visibility = Visibility.Collapsed, }; Button deleteButton = new Button() { FontSize = 16, HorizontalAlignment = HorizontalAlignment.Right, Content = "删除", Visibility = Visibility.Collapsed, Background = new SolidColorBrush() { Color = Color.FromArgb(0, 0, 0, 0) }, }; deleteButton.Click += main.tagPage.DeletePath_Click; Grid grid = new Grid() { Uid = beans[i].Id.ToString(), }; grid.Children.Add(showPath); grid.Children.Add(editPath); grid.Children.Add(deleteButton); items[i] = grid; } //添加新建行 TextBlock showNewPath = new TextBlock() { FontSize = 16, Text = "双击添加新地址", }; showNewPath.MouseLeftButtonDown += main.tagPage.Path_Click; showNewPath.MouseLeftButtonDown += main.tagPage.EditedItem_MouseDown; TextBox editNewPath = new TextBox() { FontSize = 16, Visibility = Visibility.Collapsed, }; Grid newPathGrid = new Grid() { Uid = "newPath", }; newPathGrid.Children.Add(showNewPath); newPathGrid.Children.Add(editNewPath); items[count] = newPathGrid; return(items); }