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);
        }