Столкнулся с проблемой при написании стиля, хочу что-бы при наведении на любой из прямоугольников двигалась картинка (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'а:
Результат:
Комментариев нет:
Отправить комментарий