【问题标题】:How to edit Hamburger Menu items list at runtime?如何在运行时编辑汉堡菜单项列表?
【发布时间】:2019-11-30 09:30:44
【问题描述】:

我在我的 UWP 应用程序中使用模板 10。但是我需要根据我的情况启用/禁用汉堡按钮。 我最初将IsFullScreen 属性设置为true,因为我想在用户登录应用程序后显示汉堡菜单。 因为 Shell 页面最初是在运行时加载的,所以如果我创建它的新实例,那么应用程序将全屏运行,我无法看到菜单。 提前感谢您的帮助。

【问题讨论】:

  • HamburgerButtonInfo 有一个IsEnabled 属性,您可以将此属性绑定到 ViewModel 的某人属性以控制其“启用/禁用”状态。

标签: c# xaml uwp template10


【解决方案1】:

访问 Shell 页面实例

您首先需要能够访问Shell 页面实例。您可以通过两种方式做到这一点。如果你知道,总会有一个实例,你可以像这样添加一个指向它的static 属性:

public static Shell Instance { get; private set; }

并在构造函数中设置实例:

public Shell()
{
    //InitializeComponent(), etc....
    Instance = this;
}

现在,您可以在任何地方使用Shell.Instance 访问它。如果理论上可以有多个窗口,则可以使用Windows.Current.Content 访问当前Shell 的实例。如果您使用的是 Template 10 Hamburger 模板,您会这样做:

var dialog = (ModalDialog)Window.Current.Content;
var shell = (Shell)dialog.Content;

禁用/启用

HamburgerMenu 控件中的项目属于HamburgerButtonInfo 类型,并具有可用于启用/禁用的IsEnabled 属性。如果在HamburgerMenu 控件中添加x:Name="Menu",则可以编写如下启用方法:

public void SetMenuEnabled(bool enable)
{
   foreach (var primaryButton in Menu.PrimaryButtons)
   {
      primaryButton.IsEnabled = false;
   }
   foreach (var secondaryButton in Menu.SecondaryButtons)
   {
      secondaryButton.IsEnabled = false;
   }
}

您可以将此方法放在Shell页面中,通过Shell.Instance.SetMenuEnabled(false)调用禁用所有按钮,Shell.Instance.SetMenuEnabled(true)调用启用所有按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2018-11-29
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多