how do I correctly use the MenuItemTemplateSelector for UWP NavigationView? I have looked up some samples from the internet and tried them (Code below). But it did not work as it should it just prints the class name. Currently im running on Windows version 1809. I have already tried using the same template in a listView and it works, so I was wondering if there might be bug in NavigationView, or am I missing something? Thanks in advance :)
This is what my code looks like:
Create template selector:
public class NavigationItemTemplateSelector : DataTemplateSelector
{
public DataTemplate DriveTemplate { get; set; }
public DataTemplate PathTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
return SelectTemplateCore(item);
}
protected override DataTemplate SelectTemplateCore(object item)
{
if (item is Drive) return DriveTemplate;
if (item is FileSystemElement) return PathTemplate;
return base.SelectTemplateCore(item);
}
}
Put something like this in your page resources:
<Page.Resources>
<DataTemplate x:Key="FileSystemDataTemplate" x:DataType="entities:FileSystemElement">
<StackPanel>
<TextBlock Text="{x:Bind Name}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DriveDataTemplate" x:DataType="entities:Drive">
<StackPanel>
<SymbolIcon Symbol="{x:Bind Icon}" />
<TextBlock Text="{x:Bind Name}" />
</StackPanel>
</DataTemplate>
<entities:NavigationItemTemplateSelector x:Key="NVMenuItemsSelector"
DriveTemplate="{StaticResource DriveDataTemplate}"
PathTemplate="{StaticResource FileSystemDataTemplate}">
</entities:NavigationItemTemplateSelector>
</Page.Resources>
Tell NavigationView it should use this TemplateSelector
<NavigationView MenuItemsSource="{x:Bind ViewModel.NavigationItems, Mode=OneWay}"
MenuItemTemplateSelector="{StaticResource NVMenuItemsSelector}">