public static async Task ShowAsync(INavigation navigation, FlexGrid grid)
        {
            var form = new ColumnLayoutForm();

            form._grid       = grid;
            form._completion = new TaskCompletionSource <bool>();
            var columns = new ObservableCollection <ColumnLayoutItemViewModel>();

            foreach (var column in grid.Columns)
            {
                columns.Add(new ColumnLayoutItemViewModel(columns, column));
            }
            form.BindingContext = columns;
            await navigation.PushModalAsync(form, true);

            try
            {
                await form._completion.Task;
                for (int i = 0; i < columns.Count; i++)
                {
                    var cvm          = columns[i];
                    var currentIndex = grid.Columns.IndexOf(cvm.Column);
                    if (currentIndex != i)
                    {
                        grid.Columns.Move(currentIndex, i);
                    }
                    if (cvm.IsVisible != cvm.Column.IsVisible)
                    {
                        cvm.Column.IsVisible = cvm.IsVisible;
                    }
                }
            }
            catch { }
        }
 private async void OnEditColumnLayout(object sender, EventArgs e)
 {
     await ColumnLayoutForm.ShowAsync(Navigation, grid);
 }