コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }