open Xamarin.Forms type Grid with member t.ColumnWidths with set l = let cd = ColumnDefinitionCollection() for gl in l do cd.Add(ColumnDefinition(Width = gl)) t.ColumnDefinitions <- cd member t.RowHeights with set l = let rd = RowDefinitionCollection() for gl in l do rd.Add(RowDefinition(Height = gl)) t.RowDefinitions <- rd member t.Cells with set l = t.Children.Clear() for (v,c,r) in l do t.Children.Add(v,c,r) /// NB doesn't clear previous items member t.FirstRow with set l = l |> Seq.iteri (fun i v -> t.Children.Add(v,i,0)) /// NB doesn't clear previous items member t.FirstColumn with set l = l |> Seq.iteri (fun i v -> t.Children.Add(v,0,i)) type StackLayout with member t.Views with set (l: seq) = t.Children.Clear() for c in l do t.Children.Add c and get() = t.Children |> seq type View with /// NB does not remove any previous handlers member t.Tapped with set f = let tgr = TapGestureRecognizer() tgr.Tapped.Add(f) t.GestureRecognizers.Add(tgr) type Button with member t.Click with set f = t.Clicked.Add (fun _ -> f()) type Switch with member t.Toggle with set f = t.Toggled.Add (fun x -> f(x.Value))