Exemple #1
0
            public bool TryHandle(object sender, object message)
            {
                var view = _view;

                if (!view.IsAlive())
                {
                    Update(null);
                    return(false);
                }

                var activity = _view.Context.GetActivity();

                if (activity == null)
                {
                    Update(null);
                    Tracer.Warn("(PopupMenu) The contex of view is not an activity.");
                    return(false);
                }

                var  template = _view.GetBindingMemberValue(AttachedMembers.View.PopupMenuTemplate);
                var  path     = _view.GetBindingMemberValue(AttachedMembers.View.PopupMenuPlacementTargetPath);
                View itemView = null;

                if (!string.IsNullOrEmpty(path))
                {
                    itemView = (View)BindingExtensions.GetValueFromPath(message, path);
                }

                var menuPresenter = _view.GetBindingMemberValue(AttachedMembers.View.PopupMenuPresenter);

                if (menuPresenter == null)
                {
                    var menu = new PopupMenu(activity, itemView ?? view);
                    menu.Menu.ApplyMenuTemplate(template, activity, itemView ?? view);
                    menu.SetOnDismissListener(DismissListener);
                    menu.Show();
                    return(true);
                }
                return(menuPresenter.Show(view, itemView ?? view, template, message, (s, menu) => MenuTemplate.Clear(menu)));
            }