In Xamarin.Forms 2.3.4.192-pre2, I have created a custom `ViewCell` that uses a grid for the `DataTemplate` of a `Xamarin.Forms.ListView`.

When the `ListView` is loaded, it throws `System.ArgumentException: NaN is not a valid value for width`.

I've located the [error in the Xamarin.Forms source code](https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/Size.cs#L19), but I can't figure out why the width would be `NaN`

Error
=====

> 
> System.ArgumentException: NaN is not a valid value for width 
> 
> 
> Xamarin.Forms.Size.Size(double width, double height)
>  Xamarin.Forms.VisualElement.GetSizeRequest(double widthConstraint, double heightConstraint)
>  Xamarin.Forms.VisualElement.Measure(double widthConstraint, double heightConstraint, MeasureFlags flags)
>  Xamarin.Forms.StackLayout.CompressHorizontalLayout(StackLayout.LayoutInformation layout, double widthConstraint, double heightConstraint)
>  Xamarin.Forms.StackLayout.CompressNaiveLayout(StackLayout.LayoutInformation layout, StackOrientation orientation, double widthConstraint, double heightConstraint)
>  Xamarin.Forms.StackLayout.CalculateLayout(StackLayout.LayoutInformation layout, double x, double y, double widthConstraint, double heightConstraint, bool processExpanders)
>  Xamarin.Forms.StackLayout.LayoutChildren(double x, double y, double width, double height)
>  Xamarin.Forms.Layout.UpdateChildrenLayout()
>  Xamarin.Forms.Layout.OnSizeAllocated(double width, double height)
>  Xamarin.Forms.VisualElement.SizeAllocated(double width, double height)
>  Xamarin.Forms.VisualElement.SetSize(double width, double height)
>  Xamarin.Forms.VisualElement.set\_Bounds(Rectangle value)
>  Xamarin.Forms.VisualElement.Layout(Rectangle bounds)
>  Xamarin.Forms.Layout.LayoutChildIntoBoundingRegion(VisualElement child, Rectangle region)
>  Xamarin.Forms.Grid.LayoutChildren(double x, double y, double width, double height)
>  Xamarin.Forms.Layout.UpdateChildrenLayout()
>  Xamarin.Forms.Layout.OnSizeAllocated(double width, double height)
>  Xamarin.Forms.VisualElement.SizeAllocated(double width, double height)
>  Xamarin.Forms.VisualElement.SetSize(double width, double height)
>  Xamarin.Forms.VisualElement.set\_Bounds(Rectangle value)
>  Xamarin.Forms.VisualElement.Layout(Rectangle bounds)
>  Xamarin.Forms.Layout.LayoutChildIntoBoundingRegion(VisualElement child, Rectangle region)
>  Xamarin.Forms.Platform.iOS.ViewCellRenderer.ViewTableCell.LayoutSubviews()
>  Xamarin.Forms.Platform.iOS.CellTableViewCell.GetNativeCell(UITableView tableView, Cell cell, bool recycleCells, string templateId)
>  Xamarin.Forms.Platform.iOS.ListViewRenderer.ListViewDataSource.GetCell(UITableView tableView, NSIndexPath indexPath)
>  UIKit.UIApplication.UIApplicationMain(int, string[], intptr, intptr)(wrapper managed-to-native)
>  UIKit.UIApplication.Main(string[] args, IntPtr principal, IntPtr delegate)UIApplication.cs:79
>  UIKit.UIApplication.Main(string[] args, string principalClassName, string delegateClassName)UIApplication.cs:63
>  MondayPundayApp.iOS.Application.Main(string[] args)Main.cs:17
> 
> 
> 

Code
====

I put together a reproduction in this repository on GitHub:
<https://github.com/brminnick/Xamarin.Forms-NaN-is-not-a-valid-value-for-width-reproduction>

ListView
--------

```
var listView = new ListView(ListViewCachingStrategy.RecycleElement)
{
    BackgroundColor = Color.White,
    RowHeight = 200,
    ItemTemplate = new DataTemplate(typeof(PuzzleCellCardView)),
    SeparatorColor = Color.Transparent
};

```

ViewCell
--------

```
public class PuzzleCellCardView : ViewCell
{
    Image _puzzleImage;
    Label _punNumberValueLabel;
    Image _questionMarkImage;
    Image _checkImage;

    public PuzzleCellCardView()
    {
        var puzzleImage = new Image
        {
            HeightRequest = 150,
            BackgroundColor = Color.White
        };

        var punNumberTextLabel = new Label
        {
            Text = " Pun Number",
            Style = StyleConstants.LabelStyle
        };

        _punNumberValueLabel = new Label
        {
            Style = StyleConstants.LabelStyle
        };

        var puzzleNumberStackLayout = new StackLayout
        {
            Children = {
                punNumberTextLabel,
                _punNumberValueLabel
            },
            Orientation = StackOrientation.Horizontal,
            BackgroundColor = Color.White
        };

        _questionMarkImage = new Image
        {
            Source = App.ImageConstants.QuestionMark,
            MinimumHeightRequest = 100,
            BackgroundColor = Color.White
        };

        _checkImage = new Image
        {
            Source = App.ImageConstants.Check,
            MinimumHeightRequest = 100,
            BackgroundColor = Color.White
        };

        var whitePuzzleNumberBackgroundBoxView = new BoxView
        {
            BackgroundColor = Color.White
        };

        var cellGridLayout = new Grid
        {
            BackgroundColor = Color.Black,
            Padding = new Thickness(2),
            RowSpacing = 2,
            ColumnSpacing = 1,
            VerticalOptions = LayoutOptions.Fill,

            RowDefinitions = {
                new RowDefinition{ Height = new GridLength (20, GridUnitType.Absolute) },
                new RowDefinition{ Height = new GridLength (150, GridUnitType.Absolute) }
            },
            ColumnDefinitions = {
                new ColumnDefinition{ Width = new GridLength (1, GridUnitType.Star) },
                new ColumnDefinition{ Width = new GridLength (1, GridUnitType.Star) }
            }
        };
        cellGridLayout.Children.Add(whitePuzzleNumberBackgroundBoxView, 0, 0);
        Grid.SetColumnSpan(whitePuzzleNumberBackgroundBoxView, 2);

        cellGridLayout.Children.Add(puzzleNumberStackLayout, 0, 0);
        Grid.SetColumnSpan(puzzleNumberStackLayout, 2);

        cellGridLayout.Children.Add(_puzzleImage, 0, 1);

        cellGridLayout.Children.Add(_checkImage, 1, 1);
        cellGridLayout.Children.Add(_questionMarkImage, 1, 1);

        if (Device.OS == TargetPlatform.Android)
            _puzzleImage.InputTransparent = true;

        View = cellGridLayout;
    }
}

```
['https://Stackoverflow.com/questions/42254397', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/5953643/']
This appears to be a regression with Xamarin.Forms v2.3.4.192-pre2. 

The exception is not thrown when using Xamarin.Forms v2.3.3.180. 

I submitted the bug to the Xamarin.Forms team via Bugzilla: <https://bugzilla.xamarin.com/show_bug.cgi?id=52533>

Update: This error is fixed in Xamarin.Forms 2.3.4.214-pre5
Add a container (ex: frame) and specify width for this condainer,

```
<Frame x:Name="AutoCompleterContainer" Grid.Row="1" WidthRequest="400">
    <telerikInput:RadAutoComplete ....
</Frame>

```