Я пытаюсь действительно придерживаться шаблона MVVM, и в результате мне трудно понять, как я могу заставить анимацию для представления запускаться каждый раз, когда устанавливается какое-либо свойство в модели представления (посредством привязки).
В моем MainWindow.xaml у меня есть ContentPresenter, и я связываю содержимое этого докладчика с моделью представления текущего представления, которое отображается для пользователя.Например, когда пользователь впервые запускает приложение, ContentPresenter будет привязан к StartViewModel.Если пользователь затем нажимает кнопку, которая переводит его на другой экран, например, для запуска исследования, ContentPresenter необходимо привязать к StudyViewModel, чтобы можно было отобразить экран StudyView.Затем, если пользователь желает вернуться к начальному экрану, ContentPresenter в этот момент снова будет привязан к StartViewModel, который был создан при запуске приложения.Это выглядит примерно так:
<Window
...
<Grid
...
<ContentControl
x:Name="CurrentContentView"
Width="Auto"
Grid.Row="2"
Content="{Binding CurrentContentViewModel}" />
</Grid>
</Window>
CurrentContentViewModel имеет тип "ViewModelBase", который является базовым классом, который я создал для всех моделей представлений, которые реализуют INotifyPropertyChanged.Я храню ObservableCollection ViewModelBase за кулисами, и каждый раз, когда происходит какое-то событие, которое должно заставить пользователя перейти на новый экран, я ищу соответствующую модель представления в этой коллекции и устанавливаю CurrentContentViewModel для этой модели представления.Если он еще не существует в моей коллекции, я сначала добавляю его в коллекцию, а затем устанавливаю CurrentContentViewModel для этой модели представления.
У меня вопрос: как заставить мои представления запускать "вводную" анимациюкаждый раз, когда вид отображается?Я не могу настроить запуск раскадровки каждый раз, когда представление просто загружается в мой ContentPresenter, потому что я также хочу снова запустить анимацию, когда пользователь возвращается к представлению, которое уже было загружено ранее при жизни приложения.Вдобавок ко всему, мое представление «тупое» и не имеет ни малейшего представления, что оно снова было отображено в MainWindow, потому что ContentPresenter в моем MainWindow привязан к модели представления, а не к представлению (так что это почти так, как если бы МОДЕЛЬ ВИДАнеобходимо запускать какое-либо событие каждый раз, когда оно привязывается к предъявителю контента, и представление должно будет отвечать на это событие).Есть ли способ, которым я могу объявить некоторый примитивный тип, например, логический в моей разметке xaml, который может связываться с логическим значением в моей модели представления?
Заранее спасибо за любые идеи, которые могут возникнуть, и извините, если этовопрос уже задан.Я нашел несколько похожих постов, но ничего похожего на то, что я хочу сделать.
ОБНОВЛЕНИЕ - НАЙДЕНО РЕШЕНИЕ
Как оказалось (по крайней мере, с реализацией)В настоящее время у меня есть), это было гораздо проще решить, чем я предполагал.Если вы строите свои представления с использованием шаблона шаблона данных (т.е. определяете шаблон данных для каждой из ваших моделей представления в словаре ресурсов, а затем добавляете этот словарь ресурсов в список ресурсов файла app.xaml), представление обновляется каждый разон удален из управления контентом.В моем случае, каждый раз, когда я связываю Контент моего Контента Контента с моделью представления, отличной от предыдущей, представление, которое было «построено» для этой модели представления, фактически удаляется.Затем, когда модель представления снова переназначается на управление контентом, представление создается заново.Поэтому я могу поместить свои экранные анимации вступления в событие Loaded XAML представления и мои экранные анимации экрана в событие UnLoaded XAML представления.
Я хотел бы поделиться этим в случае, если кто-то еще сталкиваетсяпохожая проблема - я не знал об этом типе поведения, используя шаблоны данных для отображения представления для модели представления.