Example #1
0
        /// <summary>
        /// Renders an adaptive card.
        /// </summary>
        /// <returns></returns>
        public RenderedAdaptiveCard RenderCard(AdaptiveCard card)
        {
            if (card == null)
            {
                throw new ArgumentNullException(nameof(card));
            }

            ValidateCard(card);

            RenderedAdaptiveCard renderCard = null;

            void Callback(object sender, AdaptiveActionEventArgs args)
            {
                renderCard?.InvokeOnAction(args);
            }

            var context = new AdaptiveRenderContext(Callback, null)
            {
                ActionHandlers   = ActionHandlers,
                Config           = HostConfig ?? new AdaptiveHostConfig(),
                Resources        = Resources,
                ElementRenderers = ElementRenderers
            };

            var element = context.Render(card);

            renderCard = new RenderedAdaptiveCard(element, card, context.Warnings);
            renderCard.InputBindings = context.InputBindings;

            return(renderCard);
        }
Example #2
0
        /// <summary>
        /// Renders an adaptive card.
        /// </summary>
        /// <param name="card">The card to render</param>
        public RenderedAdaptiveCard RenderCard(AdaptiveCard card)
        {
            if (card == null)
            {
                throw new ArgumentNullException(nameof(card));
            }
            RenderedAdaptiveCard renderCard = null;

            //card.ResolveData(new ResolveContext()
            //{
            //    Elements = card.Elements
            //});

            void ActionCallback(object sender, AdaptiveActionEventArgs args)
            {
                renderCard?.InvokeOnAction(args);
            }

            void MediaClickCallback(object sender, AdaptiveMediaEventArgs args)
            {
                renderCard?.InvokeOnMediaClick(args);
            }

            var context = new AdaptiveRenderContext(ActionCallback, null, MediaClickCallback, card.Elements)
            {
                ResourceResolvers = ResourceResolvers,
                ActionHandlers    = ActionHandlers,
                Config            = HostConfig ?? new AdaptiveHostConfig(),
                Resources         = Resources,
                ElementRenderers  = ElementRenderers,
                Lang = card.Lang
            };

            string accentColor           = HostConfig.ContainerStyles.Default.ForegroundColors.Accent.Default;
            string lighterAccentColor    = ColorUtil.GenerateLighterColor(accentColor);
            string attentionColor        = HostConfig.ContainerStyles.Default.ForegroundColors.Attention.Default;
            string lighterAttentionColor = ColorUtil.GenerateLighterColor(attentionColor);

            Resources["Adaptive.Action.Positive.Button.Static.Background"]       = context.GetColorBrush(accentColor);
            Resources["Adaptive.Action.Positive.Button.MouseOver.Background"]    = context.GetColorBrush(lighterAccentColor);
            Resources["Adaptive.Action.Destructive.Button.Foreground"]           = context.GetColorBrush(attentionColor);
            Resources["Adaptive.Action.Destructive.Button.MouseOver.Foreground"] = context.GetColorBrush(lighterAttentionColor);

            var element = context.Render(card);

            renderCard = new RenderedAdaptiveCard(element, card, context.Warnings, context.InputBindings);


            return(renderCard);
        }
        public RenderedAdaptiveCardInputs(RenderedAdaptiveCard card)
        {
            if (card == null)
            {
                throw new ArgumentNullException(nameof(card));
            }

            var dic = new Dictionary <string, string>();

            foreach (var id in card.InputBindings.Keys)
            {
                var value = card.InputBindings[id]();
                if (value != null)
                {
                    dic[id] = value.ToString();
                }
            }

            _dictionary = new ReadOnlyDictionary <string, string>(dic);
        }