Это ситуация, которая возникает часто:
В представлении у вас есть элемент управления, привязанный к свойству ViewModel (поддерживаемый INotifyPropertyChanged). Например:
<TextBlock Text="{Binding Path=Subtotal}"/>
Когда свойство изменяется, вам нужно привлечь внимание пользователя к этому факту с помощью творческой анимации. Как я могу использовать тот факт, что представление уже подключено к уведомлению, и избежать создания большей части дополнительного кода (или, по крайней мере, создать его один раз и использовать повторно). Триггеры данных, вероятно, лучший выбор, но я не знаю, как заставить их срабатывать при любом изменении значения по сравнению с каким-то конкретным значением.
На ум приходят следующие варианты:
- вызвать дополнительное событие в ViewModel, подписаться в View code-behind.
- создать триггер данных, привязанный к упомянутому свойству, с помощью преобразователя, который вернет истину, если значение изменяется.
- создать триггер данных, привязанный к новому логическому свойству ViewModel, которое используется для «сигнала» об изменении.
- создать поведение, прикрепленное к элементу управления, которое будет подписываться на изменение свойства зависимости элемента управления и запускать анимацию.
Какой из них вам нравится / пользуетесь? Я пропустил какие-то варианты?
P.S. Было бы неплохо (но не критично), если бы решение позволяло сначала запускать анимацию и отражать изменение значения по ее окончании.