1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows.Input;
- using Aitex.UI.Charting.ViewModel;
- using System.Windows;
- using Aitex.UI.Charting.View;
- using DataAnalysisControl.Core;
- namespace Aitex.UI.Charting.Command
- {
- public class RemoveDataSourceCommand : ICommand
- {
- public RemoveDataSourceCommand(string sourceName)
- {
- _sourceName = sourceName;
- }
- string _sourceName;
- public bool CanExecute(object parameter)
- {
- return true;
- }
- #pragma warning disable 0067
- public event EventHandler CanExecuteChanged;
- #pragma warning restore 0067
- private void AsyncShowWarningMessageBox(string message, string title)
- {
- Application.Current.Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(message, title, MessageBoxButton.OK, MessageBoxImage.Warning)));
- }
- public void Execute(object parameter)
- {
- string reason = string.Empty;
- try
- {
- var commonViewModel = (CommonViewModel)parameter;
- if (string.IsNullOrEmpty(_sourceName))
- {
- foreach (var ds in commonViewModel.DataSources)
- {
- ds.Value.Dispose();//释放每个datasource对象资源
- }
- commonViewModel.DataSources.Clear();
- commonViewModel.RenderableSeries.Clear();
- //commonViewModel.ChartDataDic.Clear();
- //commonViewModel.ChartDataSets.Clear();
- }
- else
- {
- for (int i = 0; i < commonViewModel.RenderableSeries.Count; i++)
- {
- var line = commonViewModel.RenderableSeries[i] as MyLineSeries;
- if (line.DataSource.Title == _sourceName)
- {
- (new RemoveDataSeriesCommand(line.UniqueId)).Execute(commonViewModel);
- i = -1; //reset counter
- }
- }
- if (commonViewModel.DataSources.Keys.Contains(_sourceName))
- {
- commonViewModel.DataSources[_sourceName].Dispose();//释放指定datasource对象的资源
- commonViewModel.DataSources.Remove(_sourceName);
- }
- }
- commonViewModel.InvokePropertyChanged();
- GC.Collect();
- }
- catch (Exception ex)
- {
- reason = string.Format("删除数据源{0}出错", _sourceName);
- CONTEXT.WriteLog(ex, reason);
- AsyncShowWarningMessageBox(reason, "警告");
- }
- }
- }
- }
|