using System; using System.Collections.Generic; using Xamarin.Forms; using System.Threading.Tasks; using DevExpress.Mobile.DataGrid; using DevExpress.Mobile.Core; namespace DevExpress.GridDemo { public partial class MenuCustomizationPage : ContentPage { int menuRowHandle = GridControl.InvalidRowHandle; public MenuCustomizationPage() { InitializeComponent(); BindData(); } void OnPopupMenuCustomization(object sender, DevExpress.Mobile.DataGrid.PopupMenuEventArgs e) { switch(e.MenuType) { case GridPopupMenuType.DataRow: e.Menu.Items.Clear(); PopupMenuItem item = new PopupMenuItem(); item.Caption = "Send Email"; item.Click += ItemClick; menuRowHandle = e.RowHandle; e.Menu.Items.Insert(0, item); break; case GridPopupMenuType.Header: e.Menu.Items.RemoveRange(2, 4); break; case GridPopupMenuType.TotalSummary: e.Menu.Items.RemoveAt(3); e.Menu.Items.RemoveAt(1); e.Menu.Items.RemoveAt(0); break; default: break; } } void ItemClick(object sender, EventArgs e) { if(menuRowHandle == GridControl.InvalidRowHandle) return; IRowData rowData = grid.GetRow(menuRowHandle); Customer selectedCustomer = rowData.DataObject as Customer; menuRowHandle = GridControl.InvalidRowHandle; try { Device.OpenUri(new Uri("mailto:" + selectedCustomer.Email)); } catch { } } async void BindData() { BindingContext = await LoadData(); } Task<MainPageViewModel> LoadData() { return Task<MainPageViewModel>.Run(() => new MainPageViewModel(new DemoOrdersRepository())); } } }