コード例 #1
0
        /// <summary>
        /// Creates a button that when clicked displays a flyout with the specified <paramref name="links"/>.
        /// Clicking on a link opens a web browser on that page.
        /// </summary>
        /// <param name="links"></param>
        /// <returns></returns>
        internal static Windows.UI.Xaml.Controls.Button CreateLinksAppBarButton(Dictionary <string, Uri> links)
        {
            var popup = new Windows.UI.Popups.PopupMenu();

            Windows.UI.Popups.UICommandInvokedHandler popupHandler = async(Windows.UI.Popups.IUICommand command) =>
            {
                await Windows.System.Launcher.LaunchUriAsync(links[command.Label]);
            };

            foreach (var item in links)
            {
                popup.Commands.Add(new Windows.UI.Popups.UICommand(item.Key, popupHandler));
            }

            var button = new Windows.UI.Xaml.Controls.Button
            {
                Style = App.Current.Resources["LinksAppBarButtonStyle"] as Windows.UI.Xaml.Style
            };

            button.Click += async(object sender, Windows.UI.Xaml.RoutedEventArgs e) =>
            {
                var btnSender = sender as Windows.UI.Xaml.Controls.Button;
                var transform = btnSender.TransformToVisual(Windows.UI.Xaml.Window.Current.Content) as Windows.UI.Xaml.Media.MatrixTransform;
                var point     = transform.TransformPoint(new Windows.Foundation.Point());

                await popup.ShowAsync(point);
            };

            return(button);
        }
コード例 #2
0
        public async Task <int> LaunchMenu(List <string> menuItems, Xamarin.Forms.View parent)
        {
            if (menuItems == null || menuItems.Count == 0)
            {
                return(-1);
            }

            var menu = new Windows.UI.Popups.PopupMenu();

            Windows.Foundation.Point point = new Windows.Foundation.Point(0, 0);

            if (parent != null)
            {
                // have to turn it into the UWP visual control and extract the screen coordinates
                var visualElement = parent.GetOrCreateRenderer()?.ContainerElement;
                if (visualElement != null)
                {
                    GeneralTransform transform = visualElement.TransformToVisual(null);
                    point = transform.TransformPoint(new Windows.Foundation.Point());
                }
            }

            for (var i = 0; i < menuItems.Count; i++)
            {
                var item = menuItems[i];
                menu.Commands.Add(new Windows.UI.Popups.UICommand(item));
            }

            var response = await menu.ShowAsync(point);

            if (response == null || string.IsNullOrEmpty(response.Label))
            {
                return(-1);
            }

            return(menuItems.IndexOf(response.Label));
        }
コード例 #3
0
ファイル: PopupMenu.cs プロジェクト: baskren/Pontoon
        /// <summary>
        /// Creates a new instance of the PopupMenu class.
        /// </summary>
        public PopupMenu()
        {
#if WINDOWS_UWP
            _menu = new Windows.UI.Popups.PopupMenu();
#endif
        }
コード例 #4
0
ファイル: PopupMenu.cs プロジェクト: inthehand/Charming
        /// <summary>
        /// Creates a new instance of the PopupMenu class.
        /// </summary>
        public PopupMenu()
        {
#if WINDOWS_UWP
            _menu = new Windows.UI.Popups.PopupMenu();
#endif
        }
コード例 #5
0
 private void chartOptions(object sender, RoutedEventArgs e)
 {
     var popup = new Windows.UI.Popups.PopupMenu();
     popup.ShowAsync(new Point(0, 0));
 }