在WPF中,当用户在
编辑:我已经成功实现了动画,但宽度值是固定的(使其多行并不起作用,但这并不重要)。所以我的问题现在是,如果原始大小未知,我该如何返回?在
以下是我目前的代码:
TextBox
中获得焦点时,我希望有一些动画效果,使TextBox
变成多行,并使其Width
变大(在用户输入时),当失去焦点时,TextBox
会恢复到原始大小。大小是未知的。此外,最终,TextBox
需要在WPF DataGrid
内。我以前从未做过动画,希望得到一些帮助来开始。谢谢。编辑:我已经成功实现了动画,但宽度值是固定的(使其多行并不起作用,但这并不重要)。所以我的问题现在是,如果原始大小未知,我该如何返回?在
Width
属性上是否有乘数可以使用?以下是我目前的代码:
<Window.Resources>
<Storyboard x:Key="GrowStoryboard">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textBox" Storyboard.TargetProperty="(FrameworkElement.Width)">
<SplineDoubleKeyFrame KeyTime="00:00:00.4000000" Value="400" KeySpline="0.54,0.27,0.38,0.69"/>
</DoubleAnimationUsingKeyFrames>
<Int32Animation Duration="0:0:0.4" From="1" To="3" Storyboard.TargetName="textBox" Storyboard.TargetProperty="(TextBox.MinLines)">
</Int32Animation>
</Storyboard>
<Storyboard x:Key="ShrinkStoryboard">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textBox" Storyboard.TargetProperty="(FrameworkElement.Width)">
<SplineDoubleKeyFrame KeyTime="00:00:00.4000000" Value="200" KeySpline="0.54,0.27,0.38,0.69"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FocusManager.GotFocus" SourceName="textBox">
<BeginStoryboard x:Name="GrowStoryboard_BeginStoryboard" Storyboard="{StaticResource GrowStoryboard}"/>
</EventTrigger>
<EventTrigger RoutedEvent="FocusManager.LostFocus" SourceName="textBox">
<BeginStoryboard x:Name="ShrinkStoryboard_BeginStoryboard" Storyboard="{StaticResource ShrinkStoryboard}"/>
</EventTrigger>
</Window.Triggers>
<StackPanel>
<TextBox x:Name="textBox" Width="200" Height="20" Text="TextBox" />
<TextBox x:Name="textBox1" Width="200" Height="20" Text="TextBox" />
</StackPanel>