private void RegisterCommands() { AddNewParameterCommand = new RelayCommandHandled((input) => { var instance = new MethodParameterViewModel(); var model = instance.ToGenericInputModel("Add new parmeter", _typesAttribute.ToArray()); var window = new GenericInputFormWindow(model); window.ShowDialog(); if (window.Response == WindowResponse.OK) { instance.UpdateDataFromDictionary(window.Values); Parameters.Add(instance); UpdateListToCollection(Parameters, ParametersCollection); _view.RaiseOnModifiedListEvent(Parameters); } }); ModifyNewParameterCommand = new RelayCommandHandled((input) => { var instance = SelectedParameter; var model = instance.ToGenericInputModel("Modify parmeter", _typesAttribute.ToArray()); var window = new GenericInputFormWindow(model); window.ShowDialog(); if (window.Response == WindowResponse.OK) { instance.UpdateDataFromDictionary(window.Values); UpdateListToCollection(Parameters, ParametersCollection); _view.RaiseOnModifiedListEvent(Parameters); } }, (input) => { return(SelectedParameter != null); }); RemoveParameterCommand = new RelayCommandHandled((input) => { RaiseOkCancelDialog("Confirm the remove?", "Remove", () => { Parameters.Remove(SelectedParameter); UpdateListToCollection(Parameters, ParametersCollection); }); _view.RaiseOnModifiedListEvent(Parameters); }, (input) => { return(SelectedParameter != null); }); MoveUpParameterCommand = new RelayCommandHandled((input) => { var oldSelectedParameter = SelectedParameter; var items = Parameters; Parameters = Parameters.MoveItemUp(SelectedParameter).ToList(); UpdateListToCollection(Parameters, ParametersCollection); SelectedParameter = ParametersCollection.First(k => k.Name == oldSelectedParameter.Name); _view.RaiseOnModifiedListEvent(Parameters); }, (input) => { return(SelectedParameter != null && SelectedParameter != ParametersCollection.First()); }); MoveDownParameterCommand = new RelayCommandHandled((input) => { var oldSelectedParameter = SelectedParameter; var items = Parameters; Parameters = Parameters.MoveItemDown(SelectedParameter).ToList(); UpdateListToCollection(Parameters, ParametersCollection); SelectedParameter = ParametersCollection.First(k => k.Name == oldSelectedParameter.Name); _view.RaiseOnModifiedListEvent(Parameters); }, (input) => { return(SelectedParameter != null && SelectedParameter != ParametersCollection.Last()); }); RegisterCommand(AddNewParameterCommand); RegisterCommand(ModifyNewParameterCommand); RegisterCommand(RemoveParameterCommand); RegisterCommand(MoveUpParameterCommand); RegisterCommand(MoveDownParameterCommand); }