Я хочу запускать анимацию всякий раз, когда свойство установлено (скажем, «StatusMessages») в моей ViewModel.Разработчик уже настроил событие:
eventAggregator.GetEvent<ShowStatusEvent>().Subscribe(
(message) => ShowStatus(message), ThreadOption.UIThread
);
private void ShowStatus(MyApp.MyModelViews.StatusMessage statusMessage){
// set some values in status message view model
}
Чего я не знаю, так это того, каким образом Prism подключил бы событие к моему представлению (предпочтительно в XAML), чтобы оно вызывалоанимация.Следующий «DataTrigger» работает (то есть запускает анимацию) только тогда, когда источник оценивается как определенное значение, скажем, изменено с «Отладка» на «Ошибка».Поэтому, если значение установлено 12 раз, но на одно и то же значение, скажем «Отладка» каждый раз, сборщик данных происходит не более одного раза (от значения по умолчанию до нового значения, при условии, что они не равны).
<DataTrigger Binding="{Binding DataContext.StatusMessages, ElementName=MyPanel}" Value="Error">...</DataTrigger>
Обходной путь, который мы сейчас нашли, состоит в том, чтобы добавить новое свойство bool, специально предназначенное для запуска анимации:
public bool CanBeginStoryboard{
get
{
return canBeginStoryboard;
}
set
{
canBeginStoryboard = value;
RaisePropertyChanged(() => CanBeginStoryboard);
}
}
private void ShowStatus(MyApp.MyModelViews.StatusMessage statusMessage)
{
CanBeginStoryboard = false;
//// set some values in status message view model
CanBeginStoryboard = true;
}
<DataTrigger Binding="{Binding DataContext.CanBeginStoryboard, ElementName=MyPanel}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>...</BeginStoryboard>
</DataTrigger.EnterActions>
Я предполагаю, что существует стандартный "способ призмы" для таких действий(например, WPF "RoutedEvent"> "EventTrigger"?), что отличается от того, что мы здесь делаем?Кстати, мы используем Prism 4. Заранее спасибо.