private void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (DataContext is TabViewModel) { _vm = DataContext as TabViewModel; } }
private void ReadConfig() { if (!string.IsNullOrEmpty(App.YamlFilePath) && File.Exists(App.YamlFilePath)) { var yamlText = File.ReadAllText(App.YamlFilePath); var deserializer = new Deserializer(); MVM.TabsVmList = deserializer.Deserialize <ObservableCollection <TabViewModel> >(yamlText); } if (MVM.TabsVmList != null && MVM.TabsVmList.Count > 0) { var cvm = MVM.TabsVmList.FirstOrDefault(t => t.IsCurrent); if (cvm != null) { MVM.CurrentTabViewModel = cvm; } } else { NewTab(); } var newTab = new TabViewModel { Type = 1, Title = "+", }; MVM.TabsVmList.Add(newTab); }
private void ShowDialog1(TabViewModel vm) { Dialog1.DataContext = vm; Dialog1.Visibility = Visibility.Visible; Dialog1_RenameTextBox.Text = vm.Title; Dialog1_RenameTextBox.SelectAll(); Dialog1_RenameTextBox.Focus(); }
private void NewTab() { ResetTabCurrent(); int n = MVM.TabsVmList.Count(t => t.Title.StartsWith("未命名")); var nvm = new TabViewModel { Title = string.Concat("未命名", n + 1), FileFilter = "*.*;", Hours = "12", IsCurrent = true, }; var i = MVM.TabsVmList.Count - 1; if (i < 0) { i = 0; } MVM.TabsVmList.Insert(i, nvm); MVM.CurrentTabViewModel = nvm; }
/// <summary> /// 查找文件 /// </summary> /// <param name="vm"></param> /// <param name="container"></param> /// <param name="dispatcher"></param> private static void Find(TabViewModel vm, List <FoundItem> container, Dispatcher dispatcher) { if (string.IsNullOrEmpty(vm.SrcDir)) { vm.TipsText = "请选择来源目录。"; return; } if (!Directory.Exists(vm.SrcDir)) { vm.TipsText = "来源目录不存在,请重新选择。"; return; } if (vm.SrcDir.Length <= 4) { vm.TipsText = "请勿选择磁盘根目录。"; return; } var fileFilter = vm.FileFilter.ToLower().Split(';'); if (fileFilter.Length == 1 && (string.IsNullOrEmpty(fileFilter[0]) || string.IsNullOrWhiteSpace(fileFilter[0]))) { vm.TipsText = "请输入文件类型,如 *.xml;*.html;*.txt"; return; } // 要排除的后缀名文件 var excludeExtFilterList = new List <string>(); // 要排除的文件 var excludeFileFilterList = new List <string>(); // 要排除的目录 var excludeDirFilterList = new List <string>(); foreach (var item in vm.ExcludeFilter.ToLower().Split(';')) { var s = item.Trim(); if (string.IsNullOrEmpty(s)) { continue; } if (s.StartsWith("*.")) { excludeExtFilterList.Add(s.Substring(1)); } else { s = s.Replace("/", "\\"); if (!s.StartsWith("\\")) { s = string.Concat("\\", s); } if (s.Contains(".")) { excludeFileFilterList.Add(s); } if (!s.EndsWith("\\")) { s = string.Concat(s, "\\"); } excludeDirFilterList.Add(s); } } container.Clear(); vm.LmList.Clear(); vm.TipsText = "正在搜索文件,请稍候……"; vm.ReadMeVisibility = Visibility.Collapsed; vm.SelectAllButtonIsEnabled = false; vm.CopyButtonIsEnabled = false; vm.SearchButtonIsEnabled = false; var startTime = DateTime.Now.Ticks; if (int.TryParse(vm.Hours, out int hours)) { var sdir = vm.SrcDir; Task.Factory.StartNew(() => { SearchFiles(sdir, sdir, fileFilter, excludeExtFilterList.ToArray(), excludeFileFilterList.ToArray(), excludeDirFilterList.ToArray(), hours, container); dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(() => { foreach (var item in container.OrderByDescending(i => i.LastWriteTime)) { vm.LmList.Add(item); } var ts = new TimeSpan(DateTime.Now.Ticks - startTime); vm.TipsText = string.Format("共找到 {0} 个文件,耗时 {1} 秒。", vm.LmList.Count, ts.TotalSeconds.ToString("f2")); vm.SearchButtonIsEnabled = true; vm.SelectAllButtonIsEnabled = true; vm.CopyButtonIsEnabled = true; })); }); } }