private AdaptiveCards.Rendering.Uwp.AdaptiveCardRenderer CreateRenderer(string hostConfigFileName)
        {
            var renderer = SharedAdaptiveCardRenderer.Create();

            string path = Package.Current.InstalledLocation.Path + "\\Previews\\" + hostConfigFileName;

            renderer.HostConfig = AdaptiveCards.Rendering.Uwp.AdaptiveHostConfig.FromJsonString(File.ReadAllText(path)).HostConfig;

            return(renderer);
        }
        private static AdaptiveCards.Rendering.Uwp.AdaptiveCardRenderer CreateRenderer()
        {
            var renderer = SharedAdaptiveCardRenderer.Create();

            string path = Package.Current.InstalledLocation.Path + "\\Previews\\Microsoft.Outlook.ActionableMessage.HostConfig.json";

            renderer.HostConfig = AdaptiveCards.Rendering.Uwp.AdaptiveHostConfig.FromJsonString(File.ReadAllText(path)).HostConfig;

            return(renderer);
        }
Пример #3
0
        public async void Update(AdaptiveBlockContent block, AdaptiveBlock sourceBlock, PreviewBlockHostViewModel args)
        {
            this.Children.Clear();

            try
            {
                AdaptiveCards.AdaptiveCard card = (await m_renderer.TransformAsync(sourceBlock)).Result;

                this.Children.Add(SharedAdaptiveCardRenderer.RenderFromCard(card));
            }
            catch { }
        }
        private async void RenderBlock(AdaptiveBlock block)
        {
            var transformer = new AdaptiveBlockToCardTransformer();

            var sharedCard = (await transformer.TransformAsync(block)).Result;

            if (sharedCard != null)
            {
                TextBoxCardPayload.Text = sharedCard.ToJson();
            }

            var uwpCard = SharedAdaptiveCardRenderer.ConvertToUwpCard(sharedCard);

            RenderCard(CardPreview, uwpCard, m_cardRenderer);
            RenderCard(CardPreviewTeams, uwpCard, m_cardRendererTeams);
            RenderCard(CardPreviewCortana, uwpCard, m_cardRendererCortana);
        }
        public async void Update(AdaptiveBlockContent block, AdaptiveBlock sourceBlock, PreviewBlockHostViewModel args)
        {
            AdaptiveCardContainer.Child = null;
            AdaptiveCards.Rendering.Uwp.AdaptiveCard card = null;

            try
            {
                var cardObj = sourceBlock.View.RichContent.FirstOrDefault(i => i.TargetedExperiences.Contains("Microsoft.Outlook.ActionableMessage") && i.ContentType == "application/vnd.microsoft.card.adaptive")?.Content;
                if (cardObj != null)
                {
                    string cardJson   = cardObj.ToString();
                    var    parsedCard = SharedAdaptiveCardRenderer.Parse(cardJson);
                    if (parsedCard != null)
                    {
                        card = parsedCard;
                    }
                }
            }
            catch { }

            if (card == null)
            {
                try
                {
                    var transformer = new AdaptiveBlockToCardTransformer()
                    {
                        Properties = new AdaptiveBlockToCardTransformerProperties()
                    };
                    var sharedCard = (await transformer.TransformAsync(sourceBlock)).Result;

                    card = SharedAdaptiveCardRenderer.ConvertToUwpCard(sharedCard);
                }
                catch
                {
                }
            }

            try
            {
                if (card != null)
                {
                    AdaptiveCardContainer.Child = _cardRenderer.Value.RenderAdaptiveCard(card).FrameworkElement;
                }
            }
            catch { }
        }
Пример #6
0
        internal static RenderedAdaptiveCard RenderCard(AdaptiveCard card, TypedEventHandler <RenderedAdaptiveCard, AdaptiveActionEventArgs> actionHandler = null)
        {
            try
            {
                var renderer          = SharedAdaptiveCardRenderer.Create();
                var inputTextRenderer = renderer.ElementRenderers.Get("Input.Text");
                renderer.ElementRenderers.Set("Input.Text", new ActionCenterInputTextRenderer(inputTextRenderer));

                // Constructing HostConfig from object model isn't supported yet, have to use JSON
                var hostConfigResult = AdaptiveHostConfig.FromJsonString(HOST_CONFIG);
                if (hostConfigResult.HostConfig != null)
                {
                    renderer.HostConfig = hostConfigResult.HostConfig;
                }
                else
                {
                    throw new Exception("HostConfig failed to parse");
                }

                var result = renderer.RenderAdaptiveCard(card);
                if (result.FrameworkElement == null)
                {
                    throw new Exception("Failed to render card");
                }

                if (actionHandler != null)
                {
                    // Wire up action click handler
                    result.Action += actionHandler;
                }

                return(result);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
                PreviewToast.SendRenderingError(ex);
                return(null);
            }
        }
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            AdaptiveAction action = (sender as FrameworkElement).DataContext as AdaptiveAction;

            if (action != null && action.Inputs.Any())
            {
                var transformer = new AdaptiveBlockToCardTransformer();
                var sharedCard  = (await transformer.TransformAsync(new AdaptiveBlock(new AdaptiveBlockContent()
                {
                    Actions =
                    {
                        action
                    }
                }))).Result;

                InputCollectionFields.Child = SharedAdaptiveCardRenderer.RenderFromCard(sharedCard);
                InputCollection.Visibility  = Visibility.Visible;
            }
            else
            {
                await new MessageDialog("Action performed!").ShowAsync();
            }
        }