c# - How to implement Navigation view with groups/headers and menu items in UWP
问题描述
I want to implement NavigationView with dynamic headers and menu items using data templates.
I have code as this:
<muxc:NavigationView
x:Name="SidebarNavigationView"
MenuItemsSource="{x:Bind ViewModel.SidebarItems, Mode=OneWay}"
MenuItemTemplateSelector="{StaticResource SidebarMenuItemTemplateSelector}"
SelectedItem="{x:Bind ViewModel.SelectedSidebarItem, Mode=TwoWay}"
ItemInvoked="SidebarNavigationView_ItemInvoked">
I have MenuItemTemplateSelector with 3 different templates and 3 datatypes
<local:SidebarMenuItemTemplateSelector
x:Key="SidebarMenuItemTemplateSelector"
NavItemTemplate="{StaticResource DataTemplateSidebarMenuItem}"
HeaderTemplate ="{StaticResource DataTemplateGroupSidebarMenuItem}"
NavSeparatorTemplate="{StaticResource DataTemplateSeparatorMenuItem}"/>
public class SidebarMenuItemTemplateSelector : DataTemplateSelector
{
public DataTemplate NavItemTemplate { get; set; }
public DataTemplate NavSeparatorTemplate { get; set; }
public DataTemplate HeaderTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item)
{
if (item is SeparatorSidebarItemViewModel)
{
return NavSeparatorTemplate;
}
else if (item is GroupSidebarItemViewModel)
{
return HeaderTemplate;
}
return NavItemTemplate;
}
}
and each dataTemplate looks like
<DataTemplate x:Key="DataTemplateSidebarMenuItem" x:DataType="sidebar:FolderSidebarItemViewModelBase">
<muxc:NavigationViewItem>
<Grid>
Some elements
</Grid>
</muxc:NavigationViewItem>
</DataTemplate>
<DataTemplate x:Key="DataTemplateGroupSidebarMenuItem" x:DataType="sidebar:GroupSidebarItemViewModel">
<muxc:NavigationViewItem>
<Grid>
Some elements including toggle(collpse) button
</Grid>
</muxc:NavigationViewItem>
</DataTemplate>
<DataTemplate x:Key="DataTemplateSeparatorMenuItem" x:DataType="sidebar:SeparatorSidebarItemViewModel">
<muxc:NavigationViewItemSeparator/>
</DataTemplate>
The problem is: I have folders inside group and right now I implemented everything as NavigationMenuItem because of which when I select group item with some folders inside it, it is crashing as it can't move focus to one folder.
Note: My Folder datatype (which is basically MenuItem) has a property "IsGroup".
Solution required: I want my folders to look as NavigationMenuItem if not grouped and to look inside NavigationMenuItemHeader(group) if IsGroup property is true.
Great if you can help. Thanks in advance.
解决方案
推荐阅读
- php - 使用 2 个循环创建二维数组
- python - Flask-Login 如何检查用户是否具有某个属性值
- html - 如何更改 div 内的 fontawesome 图标的属性?
- splunk - 联接数据中的 Splunk 查询引用字段
- javascript - 如何检查用户是否有任何角色 discord.js
- azure - 在 ADF 管道中映射数据流与 SQL 存储过程
- c++ - 如何使用多个文件为 C++ 设置 sublime 3 构建
- react-native - 如何在反应原生图表套件中将 Y 轴值从数字更改为字符串
- parameters - 在 Micronaut 中从控制器到客户端绑定/传递请求参数
- angularjs - angular__WEBPACK_IMPORTED_MODULE_0__default.angular.module 不是函数