UWP - Как показать разные View (UserControl) в каждом PivotItem, когда Pivot привязан к списку ViewModels?

Я создаю приложение UWP, используя шаблон Template10 Minimal. У меня есть список ViewModels, которые имеют общий базовый класс. Они связаны с Pivot следующим образом:

ItemsSource="{Binding EnabledModels}"

Я настроил несколько шаблонов данных для сопоставления каждого конкретного типа ViewModel с представлением (UserControl), созданным для этого конкретного ViewModel, следующим образом:

<Pivot.Resources>
    <DataTemplate x:Key="gettingStarted" x:DataType="vm:GettingStartedViewModel">
        <v:GettingStartedPart DataContext="{Binding}"></v:GettingStartedPart>
    </DataTemplate>
    <DataTemplate x:Key="packageSelection" x:DataType="vm:PackageSelectionViewModel">
        <v:PackageSelectionPart DataContext="{Binding}"></v:PackageSelectionPart>
    </DataTemplate>
</Pivot.Resources>

Я не смог определить, как заставить представление действительно отображаться. В настоящее время он будет отображать только имя типа ViewModel. Я уверен, что я как-то испортил привязки.

Моя конечная цель - представить Pivot с серией экранов сбора данных, которые имеют общую базовую модель ViewModel, но каждый экран имеет свои собственные потребности в данных. Я хотел бы сохранить экраны как отдельные представления UserControl и выделенные модели представления, чтобы их было проще поддерживать независимо.

Я искал другие шаблоны для многоэкранного захвата данных в UWP, которые не требуют отдельных страниц, но им не повезло.

Спасибо за любое руководство, которое вы можете предоставить!

1 ответ

Решение

Мне удалось заставить DataTemplateSelector работать так, чтобы Pivot отображал PivotItem, содержащий соответствующий View (UserControl) для каждой ViewModel в моем списке EnabledModels, Спасибо комментаторам Уиллу и АВК Найду.

Хороший ресурс для этой ситуации доступен здесь

Другие вопросы по тегам