Анімація на зміни в binding

Ось наприклад, у нас текстбокс бінді до полю в ViewModel. Ми відловлюємо зміні тексту для анімації. Якщо ми вішаємо анімацію на TextСhanged, то при введенні тексту ми отримаємо багато проблем. Анімація нам може навіть не дати його нормально набрати, а ось якщо відстежуємо зміна в ViewModel, може бути зовсім інша історія.


Якщо повешана анімацію на зміну даних, а потім у Binding виставити властивість UpdateSourceTrigger = PropertyChanged, то отримаємо таку саму історію як і з TextChanged. Саме в цьому випадку, правильно було б вішатися на LostFocus. Взагалі, я вважаю, анімація це справа уявлення, а значить в першу чергу намагатися підходити з боку уявлення, а вже потім, з боку всього іншого.

Інша справа, якщо анімація на Image повинна запускатися ні до зміні чогось з Image, а при зміні значення якогось взагалі іншого властивості моделі уявлення, тоді так. В останньому випадку, звичайно ж, ми не в змозі відстежити ці дані і їх потрібно виносити на конкретний рівень. Загалом, знову залежить все від завдання. Спроба ввести суворі правила щодо цього, призведе в результаті до плохозакодірованному коду (плохозамасленное масло). ИМХО.

Додано пізніше:
До речі, в прикладі який я наводив вище, все можна було б зробити ще красивішим, якщо зробити приєднане подія, яка б називалася ImageSourceChanged. Тоді все можна було б робити через тригер так, як ніби ця подія є рідною для Image.

Схожі статті