Страницы

Поиск по вопросам

среда, 17 июля 2019 г.

Анимация в стилях WPF

Столкнулся с проблемой при написании стиля, хочу что-бы при наведении на любой из прямоугольников двигалась картинка (block1) + изменялась прозрачность, если применяю в коде прямоугольника - все работает отлично, а в стиле выдает ошибку:
Свойство TargetName не может быть задано для типа Style Setter.


Ответ

Проще всего, наверное, сделать общий стиль у картинки block1, которую вы собираетесь двигать. Вместо стиля у каждого прямоугольника мы соберём нужные свойства вместе. Обычно такое делается через MultiTrigger, но он реализует логику конъюнкции (то есть, триггер срабатывает, когда все условия выполнены), а нам нужна дизъюнкция (если хотя бы одно).
Поэтому нам придётся написать маленький конвертер.
class DisjunctionConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object p, CultureInfo ci) => values.Any(v => (bool)v);
public object[] ConvertBack(object value, Type[] targetTypes, object p, CultureInfo ci)=> throw new NotImplementedException(); }
Имея такой конвертер, всё получается довольно просто.
Вот пример XAML'а:



Результат:

Комментариев нет:

Отправить комментарий