Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Material] Animate TextBox Header/Placeholder on Focus #1527

Open
kazo0 opened this issue Mar 31, 2025 · 0 comments
Open

[Material] Animate TextBox Header/Placeholder on Focus #1527

kazo0 opened this issue Mar 31, 2025 · 0 comments
Assignees

Comments

@kazo0
Copy link
Collaborator

kazo0 commented Mar 31, 2025

We could move the animation from from NotEmpty VisualState to Focused VisualState. It would be something like:

<VisualState x:Name="Focused">
	<VisualState.Setters>
		<Setter Target="PlaceholderElement.Foreground" Value="{ThemeResource PrimaryBrush}" />
		<Setter Target="NormalBorder.Height" Value="2" />
		<Setter Target="NormalBorder.Fill" Value="{ThemeResource PrimaryBrush}" />
		<!--Set Placeholder to Visible-->
		<Setter Target="RealPlaceholderElement.Visibility" Value="Visible" />
	</VisualState.Setters>
	
	<Storyboard>
		<DoubleAnimation Storyboard.TargetName="FocusedBorder_ScaleTransform"
						 	Storyboard.TargetProperty="ScaleX"
						 	Duration="{StaticResource MaterialAnimationDuration}"
						 	EasingFunction="{StaticResource MaterialEaseInOutFunction}"
						 	To="1" />

		<!-- Header Animation Moved from NotEmpty VisualState-->
		<DoubleAnimation Storyboard.TargetName="PlaceholderElement_CompositeTransform"
							Storyboard.TargetProperty="TranslateY"
							Duration="{StaticResource MaterialTextBoxAnimationDuration}"
							EasingFunction="{StaticResource MaterialEaseInOutFunction}"
							To="-11" />

		<!-- ContentElement TranslateY value changing depending if there is a Header or not -->
		<DoubleAnimation Storyboard.TargetName="ContentElement_CompositeTransform"
							Storyboard.TargetProperty="TranslateY"
							Duration="{StaticResource MaterialAnimationDuration}"
							EasingFunction="{StaticResource MaterialEaseInOutFunction}"
							To="{Binding Header, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource EmptyToCompositeTransformTranslateY}, TargetNullValue=0, FallbackValue=0}" />

		<DoubleAnimation Storyboard.TargetName="PlaceholderElement_CompositeTransform"
							Storyboard.TargetProperty="ScaleX"
							Duration="{StaticResource MaterialTextBoxAnimationDuration}"
							EasingFunction="{StaticResource MaterialEaseInOutFunction}"
							To="0.7" />

		<DoubleAnimation Storyboard.TargetName="PlaceholderElement_CompositeTransform"
							Storyboard.TargetProperty="ScaleY"
							Duration="{StaticResource MaterialTextBoxAnimationDuration}"
							EasingFunction="{StaticResource MaterialEaseInOutFunction}"
							To="0.7" />
	</Storyboard>
</VisualState>

The result:

Placeholder

@agneszitte @kazo0 @NVLudwig

Originally posted by @erikvilima in #974

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants