using System; using System.Collections.Generic; using Xamarin.Forms; using System.Threading.Tasks; using DevExpress.Mobile.Core; using DevExpress.Mobile.DataGrid; namespace DevExpress.GridDemo { public partial class HorizontalScrollingPage { GridColumn ActiveColumn { get; set; } public HorizontalScrollingPage() { InitializeComponent(); BindData(); ActiveColumn = null; horizontalScrollingCheckEdit.CheckedChanged += (object sender, EventArgs e) => { grid.ColumnsAutoWidth = !horizontalScrollingCheckEdit.IsChecked.Value; }; } async void BindData() { MainPageViewModel model = await LoadData(); BindingContext = model; } Task<MainPageViewModel> LoadData() { return Task<MainPageViewModel>.Run(() => new MainPageViewModel(new DemoOrdersRepository())); } void OnPopupMenuCustomization(object sender, PopupMenuEventArgs e) { if((e.MenuType != GridPopupMenuType.Header) || grid.ColumnsAutoWidth) return; ActiveColumn = e.Column; if ((e.Column.FixedStyle == FixedStyle.Right) || (e.Column.FixedStyle == FixedStyle.None)) { CreatePopupMenuItem(e, "Fix Column to Left", OnLeftFixedColumnItemClick); } if ((e.Column.FixedStyle == FixedStyle.Left) || (e.Column.FixedStyle == FixedStyle.None)) { CreatePopupMenuItem(e, "Fix Column to Right", OnRightFixedColumnItemClick); } if ((e.Column.FixedStyle == FixedStyle.Left) || (e.Column.FixedStyle == FixedStyle.Right)) { CreatePopupMenuItem(e, "Unfix Column", OnNoneFixedColumnItemClick); } } void CreatePopupMenuItem(PopupMenuEventArgs e, string caption, EventHandler eventHandler) { PopupMenuItem item = new PopupMenuItem(); item.Caption = caption; item.Click += eventHandler; e.Menu.Items.Add(item); } void OnLeftFixedColumnItemClick(object sender, EventArgs e) { OnFixedItemClickCore(FixedStyle.Left, sender as PopupMenuItem, OnLeftFixedColumnItemClick); } void OnRightFixedColumnItemClick(object sender, EventArgs e) { OnFixedItemClickCore(FixedStyle.Right, sender as PopupMenuItem, OnRightFixedColumnItemClick); } void OnNoneFixedColumnItemClick(object sender, EventArgs e) { OnFixedItemClickCore(FixedStyle.None, sender as PopupMenuItem, OnNoneFixedColumnItemClick); } void OnFixedItemClickCore(FixedStyle style, PopupMenuItem item, EventHandler eventHandler) { item.Click -= eventHandler; if(ActiveColumn == null) return; ActiveColumn.FixedStyle = style; ActiveColumn = null; } } }