/// <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); }
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)); }
/// <summary> /// Creates a new instance of the PopupMenu class. /// </summary> public PopupMenu() { #if WINDOWS_UWP _menu = new Windows.UI.Popups.PopupMenu(); #endif }
private void chartOptions(object sender, RoutedEventArgs e) { var popup = new Windows.UI.Popups.PopupMenu(); popup.ShowAsync(new Point(0, 0)); }