编程语言
首页 > 编程语言> > c# – WPF Mahapps – 如何在Hamburger Menu集合中隐藏选项卡?

c# – WPF Mahapps – 如何在Hamburger Menu集合中隐藏选项卡?

作者:互联网

注意:我正在使用MVVM Light Toolkit和MahApps.Metro

所以我的应用程序中有一个HamburgerMenu控件,它在HamburgerMenuItemCollection中包含一个HamburgerMenuImageItems.
我想要做的是隐藏一个项目并显示另一个项目,具体取决于用户登录的内容.我拥有所有信息,我知道用户是谁以及是否允许他/她看到标签,但我没有想法如何隐藏选项卡.

<controls:HamburgerMenu>
    <controls:HamburgerMenu.ItemsSource>
        <controls:HamburgerMenuItemCollection>
                <controls:HamburgerMenuImageItem Label="Global">
                    <controls:HamburgerMenuImageItem.Thumbnail>
                        <BitmapImage UriSource="../../Resources/Icons/test.png" />
                    </controls:HamburgerMenuImageItem.Thumbnail>
                    <controls:HamburgerMenuImageItem.Tag>
                        <views:GlobalView />
                    </controls:HamburgerMenuImageItem.Tag>
                </controls:HamburgerMenuImageItem>

                <controls:HamburgerMenuImageItem Label="Local">
                    <controls:HamburgerMenuImageItem.Thumbnail>
                        <BitmapImage UriSource="../../Resources/Icons/test.png" />
                    </controls:HamburgerMenuImageItem.Thumbnail>
                    <controls:HamburgerMenuImageItem.Tag>
                        <views:LocalView />
                    </controls:HamburgerMenuImageItem.Tag>
                </controls:HamburgerMenuImageItem>
        </controls:HamburgerMenuItemCollection>
    </controls:HamburgerMenu.ItemsSource>
</controls:HamburgerMenu>

其中有更多代码,我认为它不相关(用于显示内容的DataTemplates).

我不确定是否可能,但是如果用户登录了不允许看到本地选项卡,则会隐藏本地选项卡.

enter image description here

解决方法:

您可以在XAML标记中为HamburgerMenuImageItem指定一个x:Name,并在视图的代码隐藏中以编程方式将其删除:

<controls:HamburgerMenu x:Name="menu">
    <controls:HamburgerMenu.ItemsSource>
        <controls:HamburgerMenuItemCollection>
            ...
            <controls:HamburgerMenuImageItem Label="Local" x:Name="local">
                ...
            </controls:HamburgerMenuImageItem>
        </controls:HamburgerMenuItemCollection>
    </controls:HamburgerMenu.ItemsSource>
</controls:HamburgerMenu>
public partial class MainWindow : MetroWindow
{
    public MainWindow()
    {
        InitializeComponent();

        if(/* user is logged in...*/)
        {
            HamburgerMenuItemCollection itemCollection = menu.ItemsSource as HamburgerMenuItemCollection;
            itemCollection.Remove(local);
        }
    }
}

标签:c,mvvm,wpf,mahapps-metro,hamburger-menu
来源: https://codeday.me/bug/20190622/1265329.html