是否可以在WinRT中以編程方式關閉/隱藏PopupMenu?如何關閉WinRT中的PopupMenu
我試圖把重點放在別的東西上,但它不起作用。 這個類(PopupMenu)不提供關閉它的方法。
我也嘗試用MenuFlyout替換PopupMenu,但在我的情況下,當另一個視圖出現時,項目消失了,並且無法以編程方式隱藏它。
截圖:
是否可以在WinRT中以編程方式關閉/隱藏PopupMenu?如何關閉WinRT中的PopupMenu
我試圖把重點放在別的東西上,但它不起作用。 這個類(PopupMenu)不提供關閉它的方法。
我也嘗試用MenuFlyout替換PopupMenu,但在我的情況下,當另一個視圖出現時,項目消失了,並且無法以編程方式隱藏它。
截圖:
我找到了解決方案,但我必須用FlyoutMenu
替換PopupMenu
。而不是從PopupMenu
使用Commands
我只是附加單擊事件處理程序的項目。
public static class FlyoutHelper
{
public static readonly DependencyProperty IsHiddenProperty =
DependencyProperty.RegisterAttached("IsHidden", typeof(bool), typeof(FlyoutHelper), new PropertyMetadata(false, OnIsHiddenPropertyChanged));
public static void SetIsHidden(DependencyObject d, bool value)
{
d.SetValue(IsHiddenProperty, value);
}
public static bool GetIsHidden(DependencyObject d)
{
return (bool)d.GetValue(IsHiddenProperty);
}
private static void OnIsHiddenPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var flyout = d as FlyoutBase;
bool isHidden = (bool)e.NewValue;
if (flyout != null && isHidden)
{
flyout.Hide();
}
}
}
用法:
<MenuFlyout helpers:FlyoutHelper.IsHidden="{Binding IsFlyoutHidden}">
<MenuFlyoutItem Click="Item1Clicked" />
<MenuFlyoutItem Click="Item2Clicked" />
</MenuFlyout>
要隱藏彈出按鈕,你只需要在瀏覽模式切換到IsFlyoutHidden
true
。
沒有辦法以編程方式隱藏菜單一旦其出。
您可以使用您等待的ShowAsync(位置)調用來顯示它。等待調用放棄控制的唯一方法是從菜單中選擇一個選項(您可以取消選項)或單擊菜單中的任意位置。
你使用它的目的是什麼?爲什麼你需要取消它,而不是讓用戶自己取消它?我可以想象至少有一個場景,我希望它消失,就好像用戶打開了彈出式菜單,然後完成了後臺進程,彈出菜單中的命令不再適用或需要更新。但是,您的使用場景是什麼 - 也許您的情況有一個解決方法?