Общий контекст: приложение MVVM.
У меня есть представление под названием JobView. Его DataContext - это класс с именем Job. Внутри Job есть свойство с именем AuthorizationNeeded.
Граница в представлении имеет стиль (из словаря ресурсов), и у этого стиля есть триггер данных, который запускает и останавливает раскадровку на основе связанного свойства AuthorizationNeeded.
<Style x:Key="AuthorizationNeededBorder"
TargetType="Border">
<Setter Property="Background"
Value="Yellow" />
<Setter Property="Opacity"
Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding AuthorizationNeeded, FallbackValue=False}"
Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Name="Flash"
Storyboard="{StaticResource OneSecondOpacityFlash}" />
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="Flash" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
Все работает как положено. Изменение значения AuthorizationNeeded запускает вспышку раскадровки при переходе в true и удаляет (и останавливает) раскадровку при переходе в false.
Однако, если я изменю DataContext JobView на другой ViewModel (другое задание) во время работы раскадровки, даже если значение AuthorizationNeeded-значения false в новом задании, раскадровка продолжает выполняться.
Триггер данных не видит изменения значения из AuthorizationNeeded true -> false во время изменения DataContext.
Любые идеи о том, как я могу получить желаемое поведение AuthorizationNeed = true = storboard, работающий на AuthorizationNeeded = false = раскадровка, не работающая при любых обстоятельствах, будет принята с благодарностью. (Я бы предпочел не изменять значение AuthorizationNeeded вручную при изменении DataContext, потому что в действительности существует много таких триггеров для этого представления ...)