Показывать анимацию, когда свойство привязанной базы данных изменяется на * любое * значение - PullRequest
1 голос
/ 27 мая 2010

Есть ли способ присоединить триггер (и последующую анимацию) к элементу управления, у которого есть свойство, связанное с базой данных, и которое срабатывает, когда значение этого свойства, связанного с базой данных, изменяется (на ЛЮБОЕ значение). Мне все равно, какое это значение, я просто хочу показать уведомление, когда значение меняется на что-то другое.

Может быть очень очевидно, но я этого не вижу.

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Чтобы сделать это полностью в XAML, вам нужно использовать EventTrigger, но помните:

  • EventTrigger может использоваться только с RoutedEvent

Если целью является отключение привязки, вы можете использовать перенаправленное событие Binding.TargetUpdated. Чтобы это событие было вызвано, вы должны добавить NotifyOnTargetUpdated = True к своему выражению привязки. Теперь при каждом обновлении цели выражения привязки будет воспроизводиться указанная анимация.

<TextBox Text={Binding ... NotifyOnTargetUpdated=True}>
  <TextBox.Triggers>
    <EventTrigger RoutedEvent="Binding.TargetUpdated">
      <EventTrigger.Actions>
        <BeginStoryboard>
          <Storyboard AutoReverse="True" BeginTime="0:0:0" Duration="0:0:0.5">
            <ColorAnimation
              Storyboard.TargetProperty="(TextBox.Background).(SolidColorBrush.Color)"
              From="White"
              To="Lavender"
              />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
  </TextBox.Triggers>
</TextBox>

Кроме того, вы можете уточнить, как и когда запускаются анимации, указав конкретные события независимо от примененных привязок. Например, чтобы запускать анимацию только при изменении свойства Text, используйте вместо этого событие TextBox.TextChanged.

0 голосов
/ 28 мая 2010

Самый простой способ - добавить дополнительное событие для этого в вашей ViewModel, которое вы вызываете вручную и к которому привязываете свой EventTrigger. У вас есть ViewModel, не так ли? ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...