diff --git a/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveColumnSetRenderer.cs b/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveColumnSetRenderer.cs index 23ed73d101..a5e41b20dc 100644 --- a/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveColumnSetRenderer.cs +++ b/source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveColumnSetRenderer.cs @@ -60,83 +60,87 @@ public static FrameworkElement Render(AdaptiveColumnSet columnSet, AdaptiveRende FrameworkElement uiContainer = context.Render(column); - TagContent tag = null; - - // Add vertical Separator - if (uiColumnSet.ColumnDefinitions.Count > 0 && (column.Separator || column.Spacing != AdaptiveSpacing.None)) + // If the column couldn't be rendered and the fallback is 'drop' + if (uiContainer != null) { - var uiSep = new Grid(); - uiSep.Style = context.GetStyle($"Adaptive.VerticalSeparator"); + TagContent tag = null; - uiSep.VerticalAlignment = VerticalAlignment.Stretch; + // Add vertical Separator + if (uiColumnSet.ColumnDefinitions.Count > 0 && (column.Separator || column.Spacing != AdaptiveSpacing.None)) + { + var uiSep = new Grid(); + uiSep.Style = context.GetStyle($"Adaptive.VerticalSeparator"); - int spacing = context.Config.GetSpacing(column.Spacing); - uiSep.Margin = new Thickness(spacing / 2.0, 0, spacing / 2.0, 0); + uiSep.VerticalAlignment = VerticalAlignment.Stretch; - uiSep.Width = context.Config.Separator.LineThickness; - if (column.Separator && context.Config.Separator.LineColor != null) - { - uiSep.Background = context.GetColorBrush(context.Config.Separator.LineColor); - } + int spacing = context.Config.GetSpacing(column.Spacing); + uiSep.Margin = new Thickness(spacing / 2.0, 0, spacing / 2.0, 0); - tag = new TagContent(uiSep, uiColumnSet); + uiSep.Width = context.Config.Separator.LineThickness; + if (column.Separator && context.Config.Separator.LineColor != null) + { + uiSep.Background = context.GetColorBrush(context.Config.Separator.LineColor); + } - uiColumnSet.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); - Grid.SetColumn(uiSep, uiColumnSet.ColumnDefinitions.Count - 1); - uiColumnSet.Children.Add(uiSep); - } - else - { - tag = new TagContent(null, uiColumnSet); - } + tag = new TagContent(uiSep, uiColumnSet); + + uiColumnSet.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); + Grid.SetColumn(uiSep, uiColumnSet.ColumnDefinitions.Count - 1); + uiColumnSet.Children.Add(uiSep); + } + else + { + tag = new TagContent(null, uiColumnSet); + } - // do some sizing magic using the magic GridUnitType.Star - var width = column.Width?.ToLower(); - if (string.IsNullOrEmpty(width)) + // do some sizing magic using the magic GridUnitType.Star + var width = column.Width?.ToLower(); + if (string.IsNullOrEmpty(width)) #pragma warning disable CS0618 // Type or member is obsolete - width = column.Size?.ToLower(); + width = column.Size?.ToLower(); #pragma warning restore CS0618 // Type or member is obsolete - ColumnDefinition columnDefinition = null; + ColumnDefinition columnDefinition = null; - if (width == null || width == AdaptiveColumnWidth.Stretch.ToLower()) - { - columnDefinition = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }; - } - else if (width == AdaptiveColumnWidth.Auto.ToLower()) - { - columnDefinition = new ColumnDefinition() { Width = GridLength.Auto }; - } - else - { - if (double.TryParse(width, out double val) && val >= 0) + if (width == null || width == AdaptiveColumnWidth.Stretch.ToLower()) { - // Weighted proportion (number only) - columnDefinition = new ColumnDefinition() { Width = new GridLength(val, GridUnitType.Star) }; + columnDefinition = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }; } - else if (width.EndsWith("px") && double.TryParse(width.Substring(0, width.Length - 2), out double pxVal) && pxVal >= 0) + else if (width == AdaptiveColumnWidth.Auto.ToLower()) { - // Exact pixel (number followed by "px") - columnDefinition = new ColumnDefinition() { Width = new GridLength((int)pxVal, GridUnitType.Pixel) }; + columnDefinition = new ColumnDefinition() { Width = GridLength.Auto }; } else { - columnDefinition = new ColumnDefinition() { Width = GridLength.Auto }; + if (double.TryParse(width, out double val) && val >= 0) + { + // Weighted proportion (number only) + columnDefinition = new ColumnDefinition() { Width = new GridLength(val, GridUnitType.Star) }; + } + else if (width.EndsWith("px") && double.TryParse(width.Substring(0, width.Length - 2), out double pxVal) && pxVal >= 0) + { + // Exact pixel (number followed by "px") + columnDefinition = new ColumnDefinition() { Width = new GridLength((int)pxVal, GridUnitType.Pixel) }; + } + else + { + columnDefinition = new ColumnDefinition() { Width = GridLength.Auto }; + } } - } - // Store the column definition in the tag so we can toggle the visibility later - tag.ColumnDefinition = columnDefinition; - tag.ViewIndex = uiColumnSet.ColumnDefinitions.Count; + // Store the column definition in the tag so we can toggle the visibility later + tag.ColumnDefinition = columnDefinition; + tag.ViewIndex = uiColumnSet.ColumnDefinitions.Count; - uiColumnSet.ColumnDefinitions.Add(columnDefinition); + uiColumnSet.ColumnDefinitions.Add(columnDefinition); - uiContainer.Tag = tag; - - Grid.SetColumn(uiContainer, uiColumnSet.ColumnDefinitions.Count - 1); - uiColumnSet.Children.Add(uiContainer); + uiContainer.Tag = tag; - context.SetVisibility(uiContainer, column.IsVisible, tag); + Grid.SetColumn(uiContainer, uiColumnSet.ColumnDefinitions.Count - 1); + uiColumnSet.Children.Add(uiContainer); + + context.SetVisibility(uiContainer, column.IsVisible, tag); + } } context.ResetSeparatorVisibilityInsideContainer(uiColumnSet);