When multiple style setters modify the same property the value is not properly reverted.
IsWarning and IsError. When these properties are set to true the FontColor is set to Orange or Red respectively. The starting text color is black.true. In the example app, this is the IsWarning property. The text color is now orange.true. In the example app, this is the IsError property. The text color is not red. false. In the example app, this is the IsWarning property. The text color remains red as expected.false. In the example app, this is the IsError property. The text color is reverted to Orange. However, the expected color to should be the default black text color.The triggers appear to revert back to the previous value that was set when the trigger was applied. However, I would have expected that when none of the triggers match, the value should be reverted back to its default state.
I would have expected the behavior to match other XAML frameworks like WPF and UWP. In the attached solution I have also included a WPF app that shows the expected behavior.
The property's value is reverted back to the state it was in before the trigger matched.

This appears like it may be the same root cause as #5422
From looking at the source code it appears the issue stems from how Setter.UnApply is implemented. It appears to cache the current value from the property when it is applied and then set that value back in when the trigger no longer matches.
Reproduces beautifully as described.
This bug also appears when a Style is derived from another Style and Triggers are added (override existing ones). Triggers cannot be used at all with this bug when it comes to a minimum of complex styling. Please fix this soon!
Any progress on this? Seems to still be an issue as of 4.6.0.1073
Most helpful comment
Reproduces beautifully as described.