Обратите внимание, что в 1809 году с 17763 SDK вы действительно могли использовать NavigationViewItem в шаблоне данных. Однако в более старых версиях NavigationViewItem допускается только в свойстве MenuItems представления Navigation (но не в MenuItemTemplate).

ался использоватьNavigationView потому что это выглядит очень полезным, но я изо всех сил пытаюсь заставить его работать с шаблоном MVVM.

Я прикрепил свойство MenuItemsSource, как в следующем фрагменте:

<Page x:Class="App5.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:local="using:App5"
      ...>

    <Page.DataContext>
        <local:MainViewModel></local:MainViewModel>
    </Page.DataContext>

    <NavigationView MenuItemsSource="{Binding Items}">
        <NavigationView.MenuItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}" />
            </DataTemplate>
        </NavigationView.MenuItemTemplate>
    </NavigationView>
</Page>

Все, что я получаю, это:

Это круто, ноNavigationViewItem имеетIcon свойство украсить текст им.

Как установить значок в зависимости от элемента, привязанного к каждомуNavigationViewItem?

ВНИМАНИЕ: Я действительно не хочу вручную добавлять значок как частьMenuItemTemplate потому что это не так, как должно быть. Что мне нужно, это привязать свойство Icon неявно сгенерированногоNavigationViewItems.

Вопрос в том, как?

Я пытался с этим (используяMenuItemContainerStyle), но это не работает:

<NavigationView MenuItemsSource="{Binding Items}">
    <NavigationView.MenuItemContainerStyle>
        <Style TargetType="NavigationViewItem">
            <Setter Property="Icon" Value="{Binding Converter={StaticResource ItemToIconConverter}}" />
        </Style>
    </NavigationView.MenuItemContainerStyle>
    <NavigationView.MenuItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </NavigationView.MenuItemTemplate>
</NavigationView>

НОТА: С предложенным XAML в ответе ниже (NavigationViewItem внутриDataTemplate),NavigationViewItem дублируется в визуальном дереве (одно вложено в другое):

Это не решение. Более того, выглядит и ведет себя плохо. Посмотрите на этот снимок предлагаемого решения:

Ответы на вопрос(1)

Ваш ответ на вопрос