как правильно использовать MenuItemTemplateSelector для UWP NavigationView?Я посмотрел некоторые образцы из Интернета и попробовал их (код ниже).Но это не сработало, так как должно было просто напечатать имя класса.В настоящее время я работаю в Windows версии 1809. Я уже пытался использовать тот же шаблон в listView, и он работает, поэтому мне было интересно, может ли быть ошибка в NavigationView, или я что-то упустил?Заранее спасибо:)
Вот так выглядит мой код:
Создать селектор шаблона:
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);
}
}
Добавьте что-то подобное в ресурсы вашей страницы:
<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>
Скажите NavigationView, что он должен использовать этот TemplateSelector
<NavigationView MenuItemsSource="{x:Bind ViewModel.NavigationItems, Mode=OneWay}"
MenuItemTemplateSelector="{StaticResource NVMenuItemsSelector}">
![enter image description here](https://i.stack.imgur.com/1vRHM.png)