Я настраиваю элемент управления WPF GroupBox. Мне нужно реализовать цветную анимацию для своего фона, когда указатель мыши входит в область управления - скажем, медленно меняйте цвет фона на предопределенный цвет (пусть он будет розовым). Я создал для него настраиваемый шаблон управления, и его существенная часть выглядит так:InvalidOperationException для ColorAnimation для WPF Grid.Background внутри ControlTemplate
<ControlTemplate TargetType="{x:Type GroupBox}">
<Grid Name="MainGrid" SnapsToDevicePixels="true">
<!-- Control layout stuff with ContentPresenter -->
</Grid>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="MainGrid"
Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
To="Pink" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Однако я не могу заставить эту анимацию работать. Я всегда получаю необработанное исключение типа:
«System.InvalidOperationException» произошло в PresentationFramework.dll с дополнительной информацией как это:. свойство «Background» не указывает на DependencyObject в пути «Background (0) '
Я столкнулся с этой проблемой. Кажется, мне нужно использовать правильный синтаксис для анимации TargetProperty. Тем не менее, я пробовал много вариантов, как следующие из них и все они не работают в моем случае:
Background.Color
(Panel.Background).Color
(Panel.Background).(SolidColorBrush.Color)
Могу ли я искать не в правильном направлении?
Просто используйте 'TargetProperty = Background' должен работать. Если он не распознает «Розовый» в качестве кисти, вам может понадобиться использовать «StaticResource» для этого, но afaik он должен работать с именем в одиночку, поскольку это предопределенное имя цвета. – Adwaenyth
@Adwaenyth, конечно, это не сработает. Дополнительная информация: объект анимации «System.Windows.Media.Animation.ColorAnimation» не может использоваться для анимации свойства «Фон», поскольку он имеет несовместимый тип «System.Windows.Media.Brush». – TecMan
Mh ... попробуйте как «Storyboard.TargetProperty = (GroupBox.Background). (SolidColorBrush.Color)», работает ли это тогда как отмечено [здесь] (http://stackoverflow.com/questions/14158500/wpf-animate -фоновый цвет)? – Adwaenyth