views:

106

answers:

2

Working on a WPF application, I started working on a custom ControlTemplate. I reached the point where I need to change some control properties when an event occurs.

For this purpose, there are Setter elements. Seems all good, but I cannot use them inside EventTrigger elements. For example, if a simple Trigger, that can be bound to control properties, is used then Setter elements can be used inside. However, I do not want to bind to a property change but rather to an event.

Is there a way to do this in pure XAML or will I have to work in the code-behind?

+1  A: 

You can put a StoryBoard there, and have it start an ObjectAnimationUsingKeyFrames that will "animate" your properties instantly to the target state. If your properties are double or Color - even better: you will be able to actually make them transition smoothly using DoubleAnimation or ColorAnimation respectively.

I think this is a bit of an overkill, but if you want to use pure XAML, this is possible to do.

Fyodor Soikin
That's exactly what I was looking for. With small modifications, I was able to change the property based on the event triggered. Just set the animation duration to 0 and KeyTime to 0 for the DiscreteObjectKeyFrame that was inside ObjectAnimationUsingKeyFrames.
Dennis Delimarsky
A: 

Here is how I implemented the event-based property changes in pure XAML (based on the solution provided in the answer).

Dennis Delimarsky