public static void showBelow(cave.GuiApplicationContext ctx, Windows.UI.Xaml.UIElement w, cave.ui.Menu menu) { if (!(w != null)) { return; } if (!(menu != null)) { return; } var widget = w; var context = ctx; var pm = new Windows.UI.Xaml.Controls.MenuFlyout(); var array = menu.getEntries(); if (array != null) { var n = 0; var m = array.Count; for (n = 0; n < m; n++) { var entry = array[n]; if (entry != null) { var i = new Windows.UI.Xaml.Controls.MenuFlyoutItem(); i.Text = entry.title; i.Click += (sender, e) => { entry.handler(); }; pm.Items.Add(i); } } } pm.ShowAt(widget, new Windows.Foundation.Point(0, Widget.getHeight(widget))); }
private async void SingleDownloadBtn_Click(object sender, RoutedEventArgs e) { var btn = sender as DropDownButton; var video = (BiliVideo)btn.DataContext; if (btn.Flyout != null) { return; } btn.Content = new ProgressRing() { IsActive = true, Height = 20, Width = 20 }; BiliVideoDashInfo dashInfo; try { dashInfo = await BiliVideoHelper.GetVideoDashStreamAsync((BiliVideo)btn.DataContext, Settings.SESSDATA); } catch (Exception ex) { Debug.WriteLine(ex.Message); btn.Content = "错误"; return; } btn.Content = "下载"; var flyout = new Windows.UI.Xaml.Controls.MenuFlyout(); var items = flyout.Items; foreach (var info in dashInfo.Videos) { var item = new Windows.UI.Xaml.Controls.MenuFlyoutItem() { Text = $"{info.Quality.ToQualityString()}-{info.Codec}", DataContext = info }; item.Click += async(s, args) => { var task = VideoDownloadManager.CreateDashDownloadAsync (video, (DashVideoInfo)item.DataContext, dashInfo.Audios.OrderByDescending(a => a.Quality).First()); ShowTipWithMessage($"{video.Name}-{info.Quality.ToQualityString()}-{info.Codec}"); await task; }; items.Add(item); } btn.Flyout = flyout; flyout.ShowAt(btn); }