public void Execute(object parameter) { try { DataObject obj = DataObjectHelper.GetPrescribedObject(_type, _id); if (null != obj) { INavigationItem item = null; if (App.Current.MainWindow.NavigationTree.FindItem(_navigateLink, out item)) { if ((item as PageItem).Page != App.Current.MainWindow.CurrentPage) { App.Current.MainWindow.Navigate(_navigateLink); } Page pageBase = App.Current.MainWindow.CurrentPage; ISupportDataObjectEditing objectEditing = _GetDataObjectEditing(obj, pageBase); ISupportSelection selection = _GetSelection(obj, pageBase); bool isEditingInProgress = false; if (null != objectEditing) { isEditingInProgress = objectEditing.IsEditingInProgress; } if (null != selection) { // if any object is editing - try to save changed if (isEditingInProgress) { isEditingInProgress = !selection.SaveEditedItem(); } // if grid isn't editing or changes saved successfully - select items if (!isEditingInProgress) { selection.Select(new Collection <DataObject>() { obj }); } } } } } catch (Exception e) { Logger.Error(e); } }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// public bool CanExecute(object parameter) { DataObject obj = DataObjectHelper.GetPrescribedObject(_type, _id); return(!string.IsNullOrEmpty(_navigateLink) && (null != obj) && !App.Current.UIManager.IsLocked); }