Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down