Example #1
0
        public ActionElementCommand(IResourceContext context, IValueProvider action, IValueProvider actionParameter, IValueProvider isEnabled, IValueProvider validates, IValueProvider closesDialog, IValueProvider isReset)
        {
            this.context = context;
            this.action  = action?.GetBestMatchingProxy(context) ?? new PlainObject(null);

            switch (isEnabled)
            {
            case LiteralValue v when v.Value is bool b:
                canExecute = new PlainBool(b);
                break;

            case null:
                canExecute = new PlainBool(true);
                break;

            default:
                var proxy = isEnabled.GetBoolValue(context);
                proxy.ValueChanged = () => CanExecuteChanged?.Invoke(this, EventArgs.Empty);
                canExecute         = proxy;
                break;
            }

            this.validates       = validates != null ? (IBoolProxy)validates.GetBoolValue(context) : new PlainBool(false);
            this.closesDialog    = closesDialog != null ? (IBoolProxy)closesDialog.GetBoolValue(context) : new PlainBool(true);
            resets               = isReset != null ? (IBoolProxy)isReset.GetBoolValue(context) : new PlainBool(false);
            this.actionParameter = actionParameter?.GetBestMatchingProxy(context) ?? new PlainObject(null);
        }