我有一个控件,其边距绑定到我的视图模型的属性:
<Grid Margin="{Binding Path=Property1, Converter={StaticResource Converter1}}"></Grid>
如何在连续更新Margin属性之间获得平滑动画?我希望边距可以滑动很短的时间而不是离散的跳跃。优选xaml溶液。
编辑: 这与此网站上的其他问题不同,因为我需要将厚度动画中的“From”绑定到之前的值,并将“To”绑定到更新的值。为视图模型添加另一个属性似乎是一种破解。
答案 0 :(得分:2)
找到解决方案;动画只需要绑定到“From”,它就会以我想要的方式制作动画。
<Grid Margin="{Binding Path=Property1,
NotifyOnTargetUpdated=True,
Converter={StaticResource Converter1}}">
<Grid.Triggers><EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard><StoryBoard>
<ThicknessAnimation Storyboard.TargetProperty="Margin"
Duration="00:00:00.5"
From="{Binding Path="Property1" Converter={StaticResource Converter1}}"/>
</StoryBoard></BeginStoryboard>
</EventTrigger></Grid.Triggers>
</Grid>
答案 1 :(得分:1)
您可以使用ThicknessAnimation
:
<BeginStoryboard>
<Storyboard>
<!-- BorderThickness animates from left=1, right=1, top=1, and bottom=1 to
left=28, right=28, top=14, and bottom=14 over one second. -->
<ThicknessAnimation
Storyboard.TargetProperty="Margin"
Duration="0:0:1.5" FillBehavior="HoldEnd" From="1,1,1,1" To="28,14,28,14" />
</Storyboard>
</BeginStoryboard>
您只需要绑定属性From
和To