public MapPinDetail() { #region Back box viewGestures = new ViewGestures() { BackgroundColor = new Color(0, 0, 0, 0.01) }; SetLayoutFlags(viewGestures, AbsoluteLayoutFlags.All); SetLayoutBounds(viewGestures, new Rectangle(0f, 0f, 1f, 1f)); Children.Add(viewGestures); viewGestures.Tap += (s, e) => { Hide(); }; viewGestures.SwipeLeft += (s, e) => { Hide(); }; viewGestures.SwipeRight += (s, e) => { Hide(); }; viewGestures.SwipeUp += (s, e) => { Hide(); }; viewGestures.SwipeDown += (s, e) => { Hide(); }; #endregion Grid gridDetail = new Grid { Padding = Device.OnPlatform(new Thickness(6), new Thickness(6), new Thickness(8)), BackgroundColor = InfoPanelForegroundColor, Opacity = InfoPanelOpacity, RowDefinitions = { new RowDefinition { Height = GridLength.Auto } }, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(10, GridUnitType.Star) }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, } }; #region Header txtTitle = new Label { Text = Title, Style = (Style)App.Current.Resources[LabelStyles.TitleStyle] }; txtCategory = new Label { Style = (Style)App.Current.Resources[LabelStyles.CategoryStyle], VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, Text = CategoryName.ToUpper(), }; stackCategory = new StackLayout { Padding = Device.OnPlatform(new Thickness(4), new Thickness(4), new Thickness(6)), VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, BackgroundColor = CategoryColor, Children = { txtCategory } }; Grid gridHeader = new Grid { BackgroundColor = Color.Transparent, RowDefinitions = { new RowDefinition { Height = GridLength.Auto }, }, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, new ColumnDefinition { Width = GridLength.Auto } //new GridLength(1, GridUnitType.Star) }, } }; gridHeader.Children.Add(txtTitle, 0, 0); gridHeader.Children.Add(stackCategory, 1, 0); #endregion #region Info txtDiscountCaption = new Label { Text = DiscountCaption, Style = (Style)App.Current.Resources[LabelStyles.DescriptionStyle] }; txtPercentValue = new Label { Text = DiscountValue, Style = (Style)App.Current.Resources[LabelStyles.DescriptionStyle] }; imgDistanceIcon = new Image { Source = DistanceIcon }; txtDistanceValue = new Label { Text = DistanceValue, Style = (Style)App.Current.Resources[LabelStyles.DescriptionStyle] }; txtDistanceCaption = new Label { Text = DistanceCaption, Style = (Style)App.Current.Resources[LabelStyles.DescriptionStyle] }; var stackInfo = new StackLayout { Spacing = Device.OnPlatform(3, 3, 3), Orientation = StackOrientation.Horizontal, Children = { txtDiscountCaption, txtPercentValue, imgDistanceIcon, txtDistanceValue, txtDistanceCaption } }; #endregion var stackDetail = new StackLayout { Spacing = Device.OnPlatform(2, 4, 8), Children = { gridHeader, stackInfo } }; gridDetail.Children.Add(stackDetail, 0, 0); imgShowDetail = new Image { Source = DetailIcon, HorizontalOptions = LayoutOptions.End }; gridDetail.Children.Add(imgShowDetail, 1, 0); borderDetail = new BorderBox(BorderBox.BorderTypeEnum.btLabel); borderDetail.HeightRequest = Device.OnPlatform(50, 58, 84); borderDetail.WidthRequest = Device.OnPlatform(210, 210, 280); borderDetail.BorderWidth = 1; borderDetail.BorderColor = (Color)App.Current.Resources[MainStyles.ListBorderColor]; borderDetail.Content = gridDetail; SetLayoutFlags(borderDetail, AbsoluteLayoutFlags.PositionProportional); SetLayoutBounds(borderDetail, Device.OnPlatform( new Rectangle(0.5, 0.365, AutoSize, AutoSize), new Rectangle(0.5, 0.360, AutoSize, AutoSize), new Rectangle(0.5, 0.355, AutoSize, AutoSize)) ); borderDetail.Scale = 0; borderDetail.AnchorY = 1; Children.Add(borderDetail); }