public ShowCardWindow(string title, AdaptiveShowCardAction action, ResourceDictionary resources) { InitializeComponent(); _resources = resources; _card = action; Title = title; }
public ShowCardWindow(string title, AdaptiveShowCardAction showCardAction) { InitializeComponent(); var renderer = new AdaptiveCardRenderer(); var renderedCard = renderer.RenderCard(showCardAction.Card); this.rootGrid.Children.Clear(); this.rootGrid.Children.Add(renderedCard.FrameworkElement); }
public static void Create(AdaptiveShowCardAction action, HtmlTag tag, AdaptiveRenderContext renderContext) { tag.Attr("id", AdaptiveCardRenderer.GenerateRandomId()); var targetId = AdaptiveCardRenderer.GenerateRandomId(); tag.Attr("data-ac-showCardId", targetId); tag.Attributes.Add("onclick", $"document.getElementById('{targetId}').style.display === 'none' ? document.getElementById('{targetId}').style.display = '' : document.getElementById('{targetId}').style.display = 'none';"); }
public static void InitializeRenderer(AdaptiveHostConfig hostConfig) { try { _renderer = new XamlCardRenderer(); if (hostConfig != null) { _renderer.SetHostConfig(hostConfig); } // Custom resource resolvers _renderer.ResourceResolvers.Set("symbol", new MySymbolResourceResolver()); _renderer.Action += async(sender, e) => { var m_actionDialog = new ContentDialog(); if (e.Action.ActionType == ActionType.ShowCard) { AdaptiveShowCardAction showCardAction = (AdaptiveShowCardAction)e.Action; m_actionDialog.Content = await _renderer.RenderCardAsXamlAsync(showCardAction.Card); } else { m_actionDialog.Content = "We got an action!\n" + e.Action.ActionType + "\n" + e.Inputs; } m_actionDialog.PrimaryButtonText = "Close"; await m_actionDialog.ShowAsync(); }; } catch { if (Debugger.IsAttached) { Debugger.Break(); } throw; } }
public void ShowCardAction() { AdaptiveShowCardAction showCardAction = new AdaptiveShowCardAction { IconUrl = "http://www.stuff.com/icon.jpg", Id = "OpenUrlId", Style = "Destructive", Title = "Title" }; ValidateBaseActionProperties(showCardAction, "http://www.stuff.com/icon.jpg", "OpenUrlId", "Title", "Destructive"); AdaptiveCard card = new AdaptiveCard(); showCardAction.Card = card; Assert.IsNotNull(showCardAction.Card); var jsonString = showCardAction.ToJson().ToString(); Assert.AreEqual("{\"card\":{\"actions\":[],\"body\":[],\"type\":\"AdaptiveCard\",\"version\":\"1.0\"},\"iconUrl\":\"http://www.stuff.com/icon.jpg\",\"id\":\"OpenUrlId\",\"style\":\"Destructive\",\"title\":\"Title\",\"type\":\"Action.ShowCard\"}", jsonString); }
public static FrameworkElement CreateShowCard(this AdaptiveShowCardAction showCardAction, AdaptiveRenderContext context, ActionsConfig actionsConfig) { Grid uiShowCardContainer = new Grid(); uiShowCardContainer.Style = context.GetStyle("Adaptive.Actions.ShowCard"); uiShowCardContainer.DataContext = showCardAction; uiShowCardContainer.Margin = new Thickness(0, actionsConfig.ShowCard.InlineTopMargin, 0, 0); uiShowCardContainer.Visibility = Visibility.Collapsed; // render the card var uiShowCardWrapper = (Grid)context.Render(showCardAction.Card); uiShowCardWrapper.Background = context.GetColorBrush("Transparent"); uiShowCardWrapper.DataContext = showCardAction; // Remove the card padding var innerCard = (Grid)uiShowCardWrapper.Children[0]; innerCard.Margin = new Thickness(0); uiShowCardContainer.Children.Add(uiShowCardWrapper); return(uiShowCardContainer); }
public void TestObjectModelActionSetElement() { AdaptiveCard card = new AdaptiveCard(new AdaptiveSchemaVersion("1.2")); AdaptiveActionSet actionSet = new AdaptiveActionSet(); card.Body.Add(actionSet); AdaptiveSubmitAction submitAction = new AdaptiveSubmitAction { Title = "Action.Submit", DataJson = "{\"x\": 13}" }; actionSet.Actions.Add(submitAction); AdaptiveOpenUrlAction openUrlAction = new AdaptiveOpenUrlAction { Title = "OpenUrl", UrlString = "http://adaptivecards.io" }; actionSet.Actions.Add(openUrlAction); #pragma warning disable 0618 AdaptiveShowCardAction showCardAction = new AdaptiveShowCardAction { Title = "ShowCard", Card = new AdaptiveCard { Body = new List <AdaptiveElement> { new AdaptiveTextBlock { Text = "This is a show card" } } } }; #pragma warning restore 0618 actionSet.Actions.Add(showCardAction); AdaptiveToggleVisibilityAction toggleVisibilityAction = new AdaptiveToggleVisibilityAction { Title = "Toggle", TargetElements = new List <AdaptiveTargetElement> { "test" } }; actionSet.Actions.Add(toggleVisibilityAction); // This lines are not indented so the comparisson doesn't fail due to extra spaces var expectedJson = @"{ ""type"": ""AdaptiveCard"", ""version"": ""1.2"", ""body"": [ { ""type"": ""ActionSet"", ""actions"": [ { ""type"": ""Action.Submit"", ""data"": { ""x"": 13 }, ""title"": ""Action.Submit"" }, { ""type"": ""Action.OpenUrl"", ""url"": ""http://adaptivecards.io"", ""title"": ""OpenUrl"" }, { ""type"": ""Action.ShowCard"", ""card"": { ""type"": ""AdaptiveCard"", ""version"": ""1.0"", ""body"": [ { ""type"": ""TextBlock"", ""text"": ""This is a show card"" } ] }, ""title"": ""ShowCard"" }, { ""type"": ""Action.ToggleVisibility"", ""targetElements"": [ ""test"" ], ""title"": ""Toggle"" } ] } ] }"; var outputJson = card.ToJson(); Assert.AreEqual(outputJson, expectedJson); }
public virtual void Visit(AdaptiveShowCardAction action) { Visit(action.Card); }
public static AdaptiveCard CreateFullCardForCandidate(Candidate c) { AdaptiveCard card = new AdaptiveCard(); card.Body = new List <AdaptiveElement>(); AdaptiveContainer header = new AdaptiveContainer(); card.Body.Add(header); header.Items = new List <AdaptiveElement>(); header.Items.Add(new AdaptiveTextBlock() { Text = c.Name, Weight = AdaptiveTextWeight.Bolder, Size = AdaptiveTextSize.Large }); AdaptiveColumnSet headerDetails = new AdaptiveColumnSet(); header.Items.Add(headerDetails); AdaptiveColumn col1 = new AdaptiveColumn(); col1.Width = AdaptiveColumnWidth.Auto; col1.Items = new List <AdaptiveElement> { new AdaptiveImage() { Url = new Uri(c.ProfilePicture), Size = AdaptiveImageSize.Small, Style = AdaptiveImageStyle.Person } }; AdaptiveColumn col2 = new AdaptiveColumn(); col2.Width = AdaptiveColumnWidth.Stretch; col2.Items = new List <AdaptiveElement> { new AdaptiveTextBlock() { Text = $"Applied {DateTime.Today.ToString("MM/dd/yyyy")}", Wrap = true }, new AdaptiveTextBlock() { Text = $"Current role {c.CurrentRole}", Spacing = AdaptiveSpacing.None, Wrap = true, IsSubtle = true } }; headerDetails.Columns = new List <AdaptiveColumn> { col1, col2 }; AdaptiveContainer details = new AdaptiveContainer(); AdaptiveTextBlock candidateSummary = new AdaptiveTextBlock() { Text = new CandidatesDataController().GetCandidateBio(c), Wrap = true }; AdaptiveFactSet factsCol1 = new AdaptiveFactSet(); factsCol1.Facts = new List <AdaptiveFact> { new AdaptiveFact("Applied to position", c.ReqId), new AdaptiveFact("Interview date", "Not set") }; AdaptiveFactSet factsCol2 = new AdaptiveFactSet(); factsCol2.Facts = new List <AdaptiveFact> { new AdaptiveFact("Hires", c.Hires.ToString()), new AdaptiveFact("No hires", c.NoHires.ToString()) }; AdaptiveColumnSet factColumns = new AdaptiveColumnSet() { Columns = new List <AdaptiveColumn> { new AdaptiveColumn() { Items = new List <AdaptiveElement> { factsCol1 }, Width = AdaptiveColumnWidth.Stretch }, new AdaptiveColumn() { Items = new List <AdaptiveElement> { factsCol2 }, Width = AdaptiveColumnWidth.Stretch } } }; details.Items = new List <AdaptiveElement> { candidateSummary, factColumns }; card.Body.Add(details); AdaptiveImageSet referrals = new AdaptiveImageSet(); referrals.ImageSize = AdaptiveImageSize.Small; referrals.Images = new List <AdaptiveImage>(); foreach (Candidate referral in new CandidatesDataController().GetReferrals(c)) { referrals.Images.Add(new AdaptiveImage() { Url = new Uri(referral.ProfilePicture), Style = AdaptiveImageStyle.Person }); } card.Body.Add(new AdaptiveTextBlock() { Text = "Referrals", Size = AdaptiveTextSize.Large }); card.Body.Add(referrals); AdaptiveAction setInterview = new AdaptiveShowCardAction() { Title = "Set interview date", Card = new AdaptiveCard() { Body = new List <AdaptiveElement> { new AdaptiveDateInput() { Id = "InterviewDate", Placeholder = "Enter in a date for the interview" } }, Actions = new List <AdaptiveAction> { new AdaptiveSubmitAction() { Title = "OK" } } } }; AdaptiveAction setComment = new AdaptiveShowCardAction() { Title = "Add comment", Card = new AdaptiveCard() { Body = new List <AdaptiveElement> { new AdaptiveTextInput() { Id = "Comment", Placeholder = "Add a comment for this candidate", IsMultiline = true } }, Actions = new List <AdaptiveAction> { new AdaptiveSubmitAction() { Title = "OK" } } } }; card.Actions = new List <AdaptiveAction> { setInterview, setComment }; return(card); }
protected override async void LoadPayload(string payload) { var newErrors = await PayloadValidator.ValidateAsync(payload); if (newErrors.Any(i => i.Type == ErrorViewModelType.Error)) { MakeErrorsLike(newErrors); return; } try { if (_renderer == null) { InitializeRenderer(MainPageViewModel.HostConfigEditor.HostConfig); } } catch (Exception ex) { newErrors.Add(new ErrorViewModel() { Message = "Initializing renderer error: " + ex.ToString(), Type = ErrorViewModelType.Error }); MakeErrorsLike(newErrors); return; } try { JsonObject jsonObject; if (JsonObject.TryParse(payload, out jsonObject)) { RenderedAdaptiveCard renderResult = _renderer.RenderAdaptiveCardFromJson(jsonObject); if (renderResult.FrameworkElement != null) { RenderedCard = renderResult.FrameworkElement; renderResult.Action += async(sender, e) => { var m_actionDialog = new ContentDialog(); if (e.Action.ActionType == ActionType.ShowCard) { AdaptiveShowCardAction showCardAction = (AdaptiveShowCardAction)e.Action; RenderedAdaptiveCard renderedShowCard = _renderer.RenderAdaptiveCard(showCardAction.Card); if (renderedShowCard.FrameworkElement != null) { m_actionDialog.Content = renderedShowCard.FrameworkElement; } } else { m_actionDialog.Content = SerializeActionEventArgsToString(e); } m_actionDialog.PrimaryButtonText = "Close"; await m_actionDialog.ShowAsync(); }; } else { newErrors.Add(new ErrorViewModel() { Message = "There was an error Rendering this card", Type = ErrorViewModelType.Error }); } } else { newErrors.Add(new ErrorViewModel() { Message = "There was an error creating a JsonObject from the card", Type = ErrorViewModelType.Error }); } if (RenderedCard is FrameworkElement) { (RenderedCard as FrameworkElement).VerticalAlignment = VerticalAlignment.Top; } MakeErrorsLike(newErrors); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); newErrors.Add(new ErrorViewModel() { Message = "Rendering failed", Type = ErrorViewModelType.Error }); MakeErrorsLike(newErrors); } }
protected override async void LoadPayload(string payload) { var newErrors = await PayloadValidator.ValidateAsync(payload); if (newErrors.Any(i => i.Type == ErrorViewModelType.Error)) { MakeErrorsLike(newErrors); return; } try { if (_renderer == null) { InitializeRenderer(MainPageViewModel.HostConfigEditor.HostConfig); } } catch (Exception ex) { newErrors.Add(new ErrorViewModel() { Message = "Initializing renderer error: " + ex.ToString(), Type = ErrorViewModelType.Error }); MakeErrorsLike(newErrors); return; } try { JsonObject jsonObject; if (JsonObject.TryParse(payload, out jsonObject)) { AdaptiveCardParseResult parseResult = AdaptiveCard.FromJson(jsonObject); RenderedAdaptiveCard renderResult = _renderer.RenderAdaptiveCard(parseResult.AdaptiveCard); if (renderResult.FrameworkElement != null) { RenderedCard = renderResult.FrameworkElement; renderResult.Action += async(sender, e) => { var m_actionDialog = new ContentDialog(); if (e.Action.ActionType == ActionType.ShowCard) { AdaptiveShowCardAction showCardAction = (AdaptiveShowCardAction)e.Action; RenderedAdaptiveCard renderedShowCard = _renderer.RenderAdaptiveCard(showCardAction.Card); if (renderedShowCard.FrameworkElement != null) { m_actionDialog.Content = renderedShowCard.FrameworkElement; } } else { m_actionDialog.Content = SerializeActionEventArgsToString(e); } m_actionDialog.PrimaryButtonText = "Close"; await m_actionDialog.ShowAsync(); }; if (!MainPageViewModel.HostConfigEditor.HostConfig.Media.AllowInlinePlayback) { renderResult.MediaPlay += async(sender, e) => { var onPlayDialog = new ContentDialog(); onPlayDialog.Content = "MediaPlayEvent:"; foreach (var source in e.Media.Sources) { onPlayDialog.Content += "\n" + source.Url + " (" + source.MimeType + ")"; } onPlayDialog.PrimaryButtonText = "Close"; await onPlayDialog.ShowAsync(); }; } else { renderResult.MediaEnded += async(sender, e) => { var mediaEndedDialog = new ContentDialog(); mediaEndedDialog.Content = "Media Ended Event:"; foreach (var source in e.Media.Sources) { mediaEndedDialog.Content += "\n" + source.Url + " (" + source.MimeType + ")"; } mediaEndedDialog.PrimaryButtonText = "Close"; await mediaEndedDialog.ShowAsync(); }; } } else { newErrors.Add(new ErrorViewModel() { Message = "There was an error Rendering this card", Type = ErrorViewModelType.Error }); } foreach (var error in parseResult.Errors) { newErrors.Add(new ErrorViewModel() { Message = error.Message, Type = ErrorViewModelType.Error }); } foreach (var error in renderResult.Errors) { newErrors.Add(new ErrorViewModel() { Message = error.Message, Type = ErrorViewModelType.Error }); } foreach (var error in parseResult.Warnings) { newErrors.Add(new ErrorViewModel() { Message = error.Message, Type = ErrorViewModelType.Warning }); } foreach (var error in renderResult.Warnings) { newErrors.Add(new ErrorViewModel() { Message = error.Message, Type = ErrorViewModelType.Warning }); } } else { newErrors.Add(new ErrorViewModel() { Message = "There was an error creating a JsonObject from the card", Type = ErrorViewModelType.Error }); } if (RenderedCard is FrameworkElement) { (RenderedCard as FrameworkElement).VerticalAlignment = VerticalAlignment.Top; } MakeErrorsLike(newErrors); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); newErrors.Add(new ErrorViewModel() { Message = "Rendering failed", Type = ErrorViewModelType.Error }); MakeErrorsLike(newErrors); } }
public static void AddActions(Grid uiContainer, IList <AdaptiveAction> actions, AdaptiveRenderContext context) { if (!context.Config.SupportsInteractivity) { return; } ActionsConfig actionsConfig = context.Config.Actions; int maxActions = actionsConfig.MaxActions; List <AdaptiveAction> list = actions.Take <AdaptiveAction>(maxActions).ToList <AdaptiveAction>(); if (!list.Any <AdaptiveAction>()) { return; } var flexLayout = new FlexLayout() { JustifyContent = FlexJustify.SpaceEvenly }; if (actionsConfig.ActionsOrientation != ActionsOrientation.Horizontal) { flexLayout.Direction = FlexDirection.Row; } else { flexLayout.Direction = FlexDirection.Column; } flexLayout.AlignItems = FlexAlignItems.Center; flexLayout.Style = context.GetStyle("Adaptive.Actions"); flexLayout.Margin = new Thickness(0, (double)((actionsConfig.ActionsOrientation == ActionsOrientation.Horizontal ? context.Config.GetSpacing(actionsConfig.Spacing) : context.Config.GetSpacing(actionsConfig.Spacing) - actionsConfig.ButtonSpacing)), 0, 0); uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); Grid.SetRow(flexLayout, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(flexLayout); bool actionMode = actionsConfig.ShowCard.ActionMode == ShowCardActionMode.Inline; if (actionMode) { if (list.Any <AdaptiveAction>((AdaptiveAction a) => a is AdaptiveShowCardAction)) { uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); } } int num = 0; List <View> views = new List <View>(); foreach (AdaptiveAction adaptiveAction in list) { var button = (Button)context.Render(adaptiveAction); if (actionsConfig.ActionsOrientation != ActionsOrientation.Horizontal) { button.Margin = new Thickness(0, (double)actionsConfig.ButtonSpacing, 0, 0); } else if (flexLayout.Children.Count > 0) { button.Margin = new Thickness((double)actionsConfig.ButtonSpacing, 0, 0, 0); } if (actionsConfig.ActionsOrientation == ActionsOrientation.Horizontal) { int num1 = num; num = num1 + 1; Grid.SetColumn(button, num1); } flexLayout.Children.Add(button); AdaptiveShowCardAction adaptiveShowCardAction = adaptiveAction as AdaptiveShowCardAction; AdaptiveShowCardAction adaptiveShowCardAction1 = adaptiveShowCardAction; if (adaptiveShowCardAction == null || !actionMode) { continue; } var grid = new Grid() { Style = context.GetStyle("Adaptive.Actions.ShowCard"), BindingContext = adaptiveShowCardAction1, Margin = new Thickness(0, (double)actionsConfig.ShowCard.InlineTopMargin, 0, 0), IsVisible = false }; var showCardGrid = (Grid)context.Render(adaptiveShowCardAction1.Card); showCardGrid.BackgroundColor = Color.Transparent; showCardGrid.BindingContext = adaptiveShowCardAction1; showCardGrid.Children[0].Margin = new Thickness(0); grid.Children.Add(showCardGrid); views.Add(grid); Grid.SetRow(grid, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(grid); button.Clicked += new EventHandler((object sender, EventArgs e) => { foreach (var actionBarCard in views) { actionBarCard.IsVisible = false; } if (!grid.IsVisible) { grid.IsVisible = true; } }); } }
public static void AddActions(Grid uiContainer, IList <AdaptiveAction> actions, AdaptiveRenderContext context) { var maxActions = context.Config.Actions.MaxActions; var actionsToProcess = actions .Take(maxActions).ToList(); if (actionsToProcess.Any()) { var uiActionBar = new UniformGrid(); if (context.Config.Actions.ActionsOrientation == ActionsOrientation.Horizontal) { uiActionBar.Columns = actionsToProcess.Count(); } else { uiActionBar.Rows = actionsToProcess.Count(); } uiActionBar.HorizontalAlignment = (HorizontalAlignment)Enum.Parse(typeof(HorizontalAlignment), context.Config.Actions.ActionAlignment.ToString()); uiActionBar.VerticalAlignment = VerticalAlignment.Bottom; uiActionBar.Style = context.GetStyle("Adaptive.Actions"); uiActionBar.Margin = new Thickness(0, context.Config.GetSpacing(AdaptiveSpacing.Default), 0, 0); uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); Grid.SetRow(uiActionBar, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(uiActionBar); bool isInline = (context.Config.Actions.ShowCard.ActionMode == ShowCardActionMode.Inline); if (isInline && actionsToProcess.Any(a => a is AdaptiveShowCardAction)) { uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); } int iPos = 0; List <FrameworkElement> actionBarCards = new List <FrameworkElement>(); foreach (var action in actionsToProcess) { // add actions var uiAction = (Button)context.Render(action); if (uiAction != null) { if (uiActionBar.Children.Count > 0) { if (context.Config.Actions.ActionsOrientation == ActionsOrientation.Horizontal) { uiAction.Margin = new Thickness(context.Config.Actions.ButtonSpacing, 0, 0, 0); } else { uiAction.Margin = new Thickness(0, context.Config.Actions.ButtonSpacing, 0, 0); } } if (context.Config.Actions.ActionsOrientation == ActionsOrientation.Horizontal) { Grid.SetColumn(uiAction, iPos++); } uiActionBar.Children.Add(uiAction); if (action is AdaptiveShowCardAction) { AdaptiveShowCardAction adaptiveShowCardAction = (AdaptiveShowCardAction)action; if (isInline) { Grid uiShowCardContainer = new Grid(); uiShowCardContainer.Style = context.GetStyle("Adaptive.Actions.ShowCard"); uiShowCardContainer.DataContext = adaptiveShowCardAction; uiShowCardContainer.Margin = new Thickness(0, context.Config.Actions.ShowCard.InlineTopMargin, 0, 0); uiShowCardContainer.Visibility = Visibility.Collapsed; // render the card var uiShowCard = context.Render(adaptiveShowCardAction.Card); ((Grid)uiShowCard).Background = context.GetColorBrush("Transparent"); uiShowCard.DataContext = adaptiveShowCardAction; uiShowCardContainer.Children.Add(uiShowCard); actionBarCards.Add(uiShowCardContainer); Grid.SetRow(uiShowCardContainer, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(uiShowCardContainer); uiAction.Click += (sender, e) => { bool showCard = (uiShowCardContainer.Visibility != Visibility.Visible); foreach (var actionBarCard in actionBarCards) { actionBarCard.Visibility = Visibility.Collapsed; } if (showCard) { uiShowCardContainer.Visibility = Visibility.Visible; } }; } } } } } }
public MainPage() { this.InitializeComponent(); // Construct a temporary object model tree until the parser is available AdaptiveCard card = new AdaptiveCard(); AdaptiveContainer container1 = new AdaptiveContainer(); AdaptiveTextBlock textBlock1 = new AdaptiveTextBlock(); textBlock1.Text = "Hello"; textBlock1.Weight = TextWeight.Normal; textBlock1.Color = TextColor.Warning; textBlock1.Size = TextSize.Large; container1.Items.Add(textBlock1); AdaptiveTextBlock textBlock2 = new AdaptiveTextBlock(); textBlock2.Text = "World"; textBlock2.Weight = TextWeight.Normal; textBlock2.Color = TextColor.Accent; container1.Items.Add(textBlock2); card.Body.Add(container1); AdaptiveContainer container2 = new AdaptiveContainer(); AdaptiveTextBlock textBlock3 = new AdaptiveTextBlock(); textBlock3.Text = "In new container"; textBlock3.Weight = TextWeight.Normal; textBlock3.Color = TextColor.Default; container2.Items.Add(textBlock3); card.Body.Add(container2); AdaptiveImage image = new AdaptiveImage(); image.Url = new Uri("https://unsplash.it/360/202?image=883"); card.Body.Add(image); m_renderer = new AdaptiveCards.XamlCardRenderer.XamlCardRenderer(); m_renderer.Action += async(sender, e) => { if (m_actionDialog != null) { m_actionDialog.Hide(); } m_actionDialog = new ContentDialog(); if (e.Action.ActionType == ActionType.ShowCard) { AdaptiveShowCardAction showCardAction = (AdaptiveShowCardAction)e.Action; m_actionDialog.Content = await m_renderer.RenderCardAsXamlAsync(showCardAction.Card); } else { m_actionDialog.Content = "We got an action!\n" + e.Action.ActionType + "\n" + e.Inputs; } m_actionDialog.PrimaryButtonText = "Close"; await m_actionDialog.ShowAsync(); }; PopulateXamlContent(card); }