public BaseViewModel(IWindowWithDialogs window) { Window = window; if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(window as System.Windows.DependencyObject)) { return; } Window = window ?? throw new ArgumentNullException("Window"); }
public PointsEditor(IEnumerable <IHierarchicalEmcosPoint> balancePoints, IEnumerable <IHierarchicalEmcosPoint> otherPoints, IWindowWithDialogs window) { _rootEmcosGroup = DEFAULT_ROOT_EMCOS_GROUP; _window = window; EmcosPoints = new HierarchicalEmcosPointCollection(null, balancePoints); OtherPoints = new HierarchicalEmcosPointCollection(null, otherPoints); InitializeComponent(); DataContext = this; NewPoints = new List <IHierarchicalEmcosPoint>(); // настройка сервиса System.ServiceModel.Channels.Binding binding = new System.ServiceModel.BasicHttpBinding() { MaxBufferSize = 10240000, MaxReceivedMessageSize = 10240000, Name = "ServiceSoap" }; _emcosWebServiceClient = new EmcosTestWebService.ServiceSoapClient(binding, new System.ServiceModel.EndpointAddress(String.Format("http://{0}/{1}", EmcosSettings.Default.ServerAddress, EmcosSettings.Default.WebServiceName))); this.Loaded += (s, e) => { //await LoadPointsFromServiceAsync(); }; CommandUpdate = new DelegateCommand(async() => { await LoadPointsFromServiceAsync(); }); CommandDelete = new DelegateCommand(() => { var dialog = _window.DialogQuestion(String.Format("Точка '{0}' будет удалена. Вы уверены, что хотите продолжить?", _emcosPointsSelectedValue.Name)); dialog.YesText = "Да, удалить"; dialog.NoText = "Отменить"; dialog.Yes = () => { _emcosPointsSelectedValue.Parent.Children.Remove(_emcosPointsSelectedValue); if (NewPoints.Contains(_emcosPointsSelectedValue)) { NewPoints.Remove(_emcosPointsSelectedValue); } if (DeletedPoints.Contains(_emcosPointsSelectedValue) == false) { DeletedPoints.Add(_emcosPointsSelectedValue); } }; }, (o) => _emcosPointsSelectedValue != null && _emcosPointsSelectedValue.Parent != null); CommandMoveUp = new DelegateCommand(() => { int index = _emcosPointsSelectedValue.Parent.Children.IndexOf(_emcosPointsSelectedValue); _emcosPointsSelectedValue.Parent.Children.Move(index, index - 1); }, (o) => _emcosPointsSelectedValue != null && _emcosPointsSelectedValue.Parent != null && _emcosPointsSelectedValue.Parent.Children.IndexOf(_emcosPointsSelectedValue) > 0 ); CommandMoveDown = new DelegateCommand(() => { int index = _emcosPointsSelectedValue.Parent.Children.IndexOf(_emcosPointsSelectedValue); _emcosPointsSelectedValue.Parent.Children.Move(index, index + 1); }, (o) => _emcosPointsSelectedValue != null && _emcosPointsSelectedValue.Parent != null && _emcosPointsSelectedValue.Parent.Children.IndexOf(_emcosPointsSelectedValue) < _emcosPointsSelectedValue.Parent.ChildrenCount - 1); CommandClear = new DelegateCommand(() => { var dialog = _window.DialogQuestion("Список точек будет очищен. Вы уверены, что хотите продолжить?"); dialog.YesText = "Да, очистить"; dialog.NoText = "Отменить"; dialog.Yes = () => { DeletedPoints.Clear(); DeletedPoints.AddRange(EmcosPoints.FlatItemsList); EmcosPoints.Clear(); NewPoints.Clear(); }; }, (o) => EmcosPoints != null && EmcosPoints.Count > 0); CommandAdd = new DelegateCommand(() => { if (_emcosPointsSelectedValue != null) { _emcosPointsSelectedValue.Children.Add(_emcosPointsFromSiteSelectedValue); } else { EmcosPoints.Add(_emcosPointsFromSiteSelectedValue); } if (NewPoints.Contains(_emcosPointsFromSiteSelectedValue) == false) { NewPoints.Add(_emcosPointsFromSiteSelectedValue); } }, (o) => _emcosPointsFromSiteSelectedValue != null); CommandBalanceFormula = new DelegateCommand(() => { BalanceFormulaEditor ctrl = new BalanceFormulaEditor(); ctrl.DataContext = Repository.Instance.GetGroupBalanceFormula(_emcosPointsSelectedValue.Id); var dialog = _window.DialogCustom(ctrl, TMPApplication.WpfDialogs.DialogMode.YesNo); dialog.YesText = "Записать"; dialog.NoText = "Отменить"; dialog.Yes = () => { ; }; }, (o) => _emcosPointsSelectedValue != null && _emcosPointsSelectedValue.IsGroup); }