You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on May 1, 2024. It is now read-only.
Xamarin.Forms 3.0 introduced VisualStateManager. This proposal is to add support for states, triggers, and provide a foundation for animations.
VSM should make easy to activate states from XAML, for this we could introduce the concept of a StateTrigger, a state trigger activates the attached state depending of a number conditions, we could have builtin AdaptiveTrigger where we activate a state depending on features like screen size or orientation, or a EventStateTrigger that could activate a state when a event is fired and deactivate when other event is fired. We already have this kind of concept and a existing EventTigger and Triggerbase .
That way the user doesn't have to call the GoToState on code behind. A StateTrigger should only apply when all conditions are met, if any of the conditions isn't met all the modifications to the properties made by the corresponding VisualState are automatically removed and the values provided initally take effect.
VSM should support more out of the box states for each of the Views like Button, Entry, Editor, ListView
VisualState should provide a way to execute animations instead of just setting properties on the elements. We should consider extend Animation or to introduce the a new api like Storyboard(similar to Animation but for XAML usage)
Need to track state Selected / UnSelected on ListView
Android
We already track device orientation changes, we should track screen size too
iOS
We already track device orientation changes, we should track screen size too
UWP
We already track device orientation changes, we should track screen size too
We need to track the hover state on a button
MacOS
We should track screen size
We need to track the hover state on a button
GTK
We should track screen size too
We need to track the hover state on a button
Implications for CSS
We could try to map media queries to AdaptiveTriggersbut I think this is out of the scope for this spec.
Backward Compatibility
There should be no changes to the existing usage of VSM without triggers, transitions or animations.
Using none of the new features should just work as before.
Drafted by @rmarinho
Rationale
Xamarin.Forms 3.0 introduced VisualStateManager. This proposal is to add support for states, triggers, and provide a foundation for animations.
VSM should make easy to activate states from XAML, for this we could introduce the concept of a
StateTrigger, a state trigger activates the attached state depending of a number conditions, we could have builtinAdaptiveTriggerwhere we activate a state depending on features like screen size or orientation, or aEventStateTriggerthat could activate a state when a event is fired and deactivate when other event is fired. We already have this kind of concept and a existingEventTiggerandTriggerbase.That way the user doesn't have to call the GoToState on code behind. A StateTrigger should only apply when all conditions are met, if any of the conditions isn't met all the modifications to the properties made by the corresponding VisualState are automatically removed and the values provided initally take effect.
VSM should support more out of the box states for each of the Views like Button, Entry, Editor, ListView
VisualState should provide a way to execute animations instead of just setting properties on the elements. We should consider extend
Animationor to introduce the a new api likeStoryboard(similar to Animation but for XAML usage)It's important this works with OnPlatform also.
Implementation
XAML Sample
Android
iOS
UWP
MacOS
GTK
Implications for CSS
We could try to map media queries to
AdaptiveTriggersbut I think this is out of the scope for this spec.Backward Compatibility
There should be no changes to the existing usage of VSM without triggers, transitions or animations.
Using none of the new features should just work as before.
Difficulty : Medium