private void CreateActions(MaterialMenuConfiguration configuration) { if (_choices == null || _choices.Count <= 0) { throw new ArgumentException("Parameter actions should not be null or empty"); } var actionModels = new List <ActionModel>(); _choices.ForEach(a => { var actionModel = new MenuActionModel { Text = a.Text, Image = a.Image, Index = a.Index }; actionModel.TextColor = configuration.TextColor; actionModel.FontFamily = configuration.TextFontFamily; actionModel.SelectedCommand = new Command <int>(async(position) => { if (this.InputTaskCompletionSource?.Task.Status == TaskStatus.WaitingForActivation) { actionModel.IsSelected = true; await this.DismissAsync(); this.InputTaskCompletionSource?.SetResult(position); } }); actionModel.SizeChangeCommand = new Command <Dictionary <string, object> >(this.LabelSizeChanged); actionModels.Add(actionModel); actionModel.Index = actionModels.IndexOf(actionModel); }); this.SetList(actionModels); }
internal static async Task <int> ShowAsync(List <MaterialMenuItem> choices, MaterialMenuDimension dimension, MaterialMenuConfiguration configuration) { var dialog = new MaterialMenuDialog(choices, dimension, configuration); await dialog.ShowAsync(); return(await dialog.InputTaskCompletionSource.Task); }
internal MaterialMenuDialog(List <MaterialMenuItem> choices, MaterialMenuDimension dimension, MaterialMenuConfiguration configuration) { _dimension = dimension; _choices = choices; this.InitializeComponent(); this.CreateActions(configuration); this.InputTaskCompletionSource = new TaskCompletionSource <int>(); Container.CornerRadius = configuration.CornerRadius; Container.BackgroundColor = configuration.BackgroundColor; }