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); }