RemoveDataSourceCommand.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows.Input;
  6. using Aitex.UI.Charting.ViewModel;
  7. using System.Windows;
  8. using Aitex.UI.Charting.View;
  9. using DataAnalysisControl.Core;
  10. namespace Aitex.UI.Charting.Command
  11. {
  12. public class RemoveDataSourceCommand : ICommand
  13. {
  14. public RemoveDataSourceCommand(string sourceName)
  15. {
  16. _sourceName = sourceName;
  17. }
  18. string _sourceName;
  19. public bool CanExecute(object parameter)
  20. {
  21. return true;
  22. }
  23. #pragma warning disable 0067
  24. public event EventHandler CanExecuteChanged;
  25. #pragma warning restore 0067
  26. private void AsyncShowWarningMessageBox(string message, string title)
  27. {
  28. Application.Current.Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(message, title, MessageBoxButton.OK, MessageBoxImage.Warning)));
  29. }
  30. public void Execute(object parameter)
  31. {
  32. string reason = string.Empty;
  33. try
  34. {
  35. var commonViewModel = (CommonViewModel)parameter;
  36. if (string.IsNullOrEmpty(_sourceName))
  37. {
  38. foreach (var ds in commonViewModel.DataSources)
  39. {
  40. ds.Value.Dispose();//释放每个datasource对象资源
  41. }
  42. commonViewModel.DataSources.Clear();
  43. commonViewModel.RenderableSeries.Clear();
  44. //commonViewModel.ChartDataDic.Clear();
  45. //commonViewModel.ChartDataSets.Clear();
  46. }
  47. else
  48. {
  49. for (int i = 0; i < commonViewModel.RenderableSeries.Count; i++)
  50. {
  51. var line = commonViewModel.RenderableSeries[i] as MyLineSeries;
  52. if (line.DataSource.Title == _sourceName)
  53. {
  54. (new RemoveDataSeriesCommand(line.UniqueId)).Execute(commonViewModel);
  55. i = -1; //reset counter
  56. }
  57. }
  58. if (commonViewModel.DataSources.Keys.Contains(_sourceName))
  59. {
  60. commonViewModel.DataSources[_sourceName].Dispose();//释放指定datasource对象的资源
  61. commonViewModel.DataSources.Remove(_sourceName);
  62. }
  63. }
  64. commonViewModel.InvokePropertyChanged();
  65. GC.Collect();
  66. }
  67. catch (Exception ex)
  68. {
  69. reason = string.Format("删除数据源{0}出错", _sourceName);
  70. CONTEXT.WriteLog(ex, reason);
  71. AsyncShowWarningMessageBox(reason, "警告");
  72. }
  73. }
  74. }
  75. }