public void OnClickFilter(WizardItem item)
 {
 }
        public async Task OnOpenWizzard(WizardItem item)
        {
            IsLoadedData = false;

            if (item != null)
            {
                SelectedItem = item;

                SelectionHistory.AddLast(item);
            }

            WizardStageResult selections = null;

            if (_wizardId == null)
            {
                var wizardType = item.TypeSource;
                if (wizardType == null || this.HyperStore == null)
                {
                    IsLoadedData = true;
                    return;
                }

                var attr       = wizardType.AsType()?.GetCustomAttributes(true);
                var configAttr = attr?.OfType <ConfigAttribute>().FirstOrDefault();

                if (_pendingConfig == null)
                {
                    var configType = configAttr?.ConfigType;

                    _pendingConfig = configType != null ? (HyperJobConfig)Activator.CreateInstance(configType) : null;
                    if (_pendingConfig != null)
                    {
                        // Show the wizard properties before anything else.
                        ShowPropertyGrid = true;
                        IsLoadedData     = true;

                        SelectionHistory.RemoveLast();                         //

                        return;
                    }
                }

                // Create a new wizard.
                var res = await this.HyperStore.ExecuteAsync(new StartHyperJobArgs(wizardType) { JobConfig = _pendingConfig });

                // Clean it up from the last populate.
                Items.Clear();
                _pendingConfig = null;
                _wizardId      = res.JobId;
            }
            else
            {
                if (_currentStage is WizardListStage)
                {
                    //selections = new WizardStageResult() { Results = Items.Where(it=>it.Selected == true).Select(it => it.Name).ToArray() };
                    selections = new WizardStageResult()
                    {
                        Results = new[] { SelectedItem.Value }
                    };
                }
                else if (_currentStage is WizardDataInputStage)
                {
                    //selections = new WizardStageResult() { Results = new string[] { _lastInputValue } };
                    selections = new WizardStageResult()
                    {
                        Results = new string[] { ConfirmDialogMessage }
                    };
                }
            }

            MessageDescription = "Wizard working...";
            Items.Clear();

            _currentStage = await this.HyperStore.ExecuteAsync(new StepAheadWizardArgs()
            {
                JobId = _wizardId, PreviousStepResult = selections
            });

            if (_currentStage == null || _currentStage.IsFinal)
            {
                if (_wizardId != null)
                {
                    MessageDescription = "Wizard Completed, Hit RESET to start over";
                    Items.Clear();
                    IsWizardFinish = true;
                }
            }
            else
            {
                var listStage  = _currentStage as WizardListStage;
                var inputStage = _currentStage as WizardDataInputStage;

                if (listStage != null)
                {
                    var items = listStage.Entries.Select(it => new WizardItem()
                    {
                        Title = it.Title, Selected = it.PreSelected, Value = it.Value
                    });

                    Items.Clear();
                    Items.AddRange(items);

                    // MultiSelect ?

                    MessageDescription = _currentStage.Title;
                }
                else if (inputStage != null)
                {
                    ShowConfirmDialog = true;

                    ConfirmDialogTitle = inputStage.Title;
                    if (inputStage.DefaultValue != null)
                    {
                        ConfirmDialogMessage = Convert.ToString(inputStage.DefaultValue);
                    }
                }
            }

            IsLoadedData = true;
        }