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).
我不确定是否可能,但是如果用户登录了不允许看到本地选项卡,则会隐藏本地选项卡.
解决方法:
您可以在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