如何在运行时编辑汉堡菜单项列表?
How to edit Hamburger Menu items list at runtime?
我在我的 UWP 应用程序中使用模板 10。但是我需要根据我的条件 Enable/Disable 汉堡包按钮。
我最初将 IsFullScreen
属性 设置为 true 是因为我想在用户登录应用程序后显示汉堡菜单。
因为 Shell 页面最初是加载的,然后在运行时加载,如果我创建它的新实例,那么应用程序是 运行 全屏显示,我看不到菜单。
提前感谢您的帮助。
正在访问 Shell 页面实例
您首先需要能够访问 Shell
页面实例。您可以通过两种方式执行此操作。如果你知道,总会有一个实例,你可以像这样添加一个 static
属性 指向它:
public static Shell Instance { get; private set; }
并在构造函数中设置实例:
public Shell()
{
//InitializeComponent(), etc....
Instance = this;
}
现在,您可以从任何地方使用 Shell.Instance
访问它。如果理论上可以有多个 windows,则可以使用 Windows.Current.Content
访问当前 Shell
的实例。如果您使用 Template 10 汉堡包模板,您将执行:
var dialog = (ModalDialog)Window.Current.Content;
var shell = (Shell)dialog.Content;
Disabling/enabling
HamburgerMenu
控件中的项目属于 HamburgerButtonInfo
类型,并且具有可用于 enabling/disabling 的 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)
启用所有按钮。
我在我的 UWP 应用程序中使用模板 10。但是我需要根据我的条件 Enable/Disable 汉堡包按钮。
我最初将 IsFullScreen
属性 设置为 true 是因为我想在用户登录应用程序后显示汉堡菜单。
因为 Shell 页面最初是加载的,然后在运行时加载,如果我创建它的新实例,那么应用程序是 运行 全屏显示,我看不到菜单。
提前感谢您的帮助。
正在访问 Shell 页面实例
您首先需要能够访问 Shell
页面实例。您可以通过两种方式执行此操作。如果你知道,总会有一个实例,你可以像这样添加一个 static
属性 指向它:
public static Shell Instance { get; private set; }
并在构造函数中设置实例:
public Shell()
{
//InitializeComponent(), etc....
Instance = this;
}
现在,您可以从任何地方使用 Shell.Instance
访问它。如果理论上可以有多个 windows,则可以使用 Windows.Current.Content
访问当前 Shell
的实例。如果您使用 Template 10 汉堡包模板,您将执行:
var dialog = (ModalDialog)Window.Current.Content;
var shell = (Shell)dialog.Content;
Disabling/enabling
HamburgerMenu
控件中的项目属于 HamburgerButtonInfo
类型,并且具有可用于 enabling/disabling 的 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)
启用所有按钮。