У меня есть страница UWP с управлением сводкой. Я использую шаблон MVVM, где свойство ItemsSource
сводной области связано с наблюдаемой коллекцией моих моделей представления. Я использую ItemTemplateSelector
сводной диаграммы, чтобы выбрать соответствующий DataTemplate для каждой модели представления на основе сводной диаграммы SelectedItem
, которая, в свою очередь, связана с выбранной моделью представления.
Здесь XAML, которым я являюсь используя:
<Pivot Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" Margin="10"
IsHeaderItemsCarouselEnabled="False"
ItemsSource ="{x:Bind MainPageViewModel.EditViewModels}"
SelectedItem="{x:Bind MainPageViewModel.SelectedEntityViewModel,Mode=TwoWay}"
ItemTemplateSelector="{StaticResource DetailViewTemplateSelector}" >
<Pivot.HeaderTemplate>
<DataTemplate x:DataType="viewModel:DetailViewModelBase">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding TabHeader,Mode=OneWay}" FontSize="12"
VerticalAlignment="Center"/>
</StackPanel >
</DataTemplate>
</Pivot.HeaderTemplate>
</Pivot>
На той же странице у меня есть навигационное представление, в котором событие нажатия навигационного элемента создает новую модель представления на основе выбранного элемента и добавляет ее в наблюдаемую коллекцию MainPageViewModel.EditViewModels
и задает SelectedViewModel
к вновь созданному.
Приложение работает нормально, как и ожидалось, работает неявным образом DataTemplate, который находится в WPF и отсутствует в UWP. Единственная проблема, с которой я сталкиваюсь, заключается в том, что при переходе со страницы, содержащей элементы управления Pivot, и при ее возврате все элементы Pivot очищаются и не отображаются.
Я установил в конструкторе страниц this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required
и не переопределяет метод NavigateTo
.
Если я устанавливаю свои пользовательские элементы управления непосредственно в элементах Pivot без использования селектора DataTemplate
, то элементы Pivot сохраняются, когда я возвращаюсь на страницу. Сводные элементы очищаются только тогда, когда я использую ItemTemplateSelector
.
. Любая помощь будет принята с благодарностью. Я потратил на это более четырех дней, не имея возможности выяснить проблему.
Заранее спасибо