如何解决如何:在Silverlight 4中为MVVM ViewModel属性设置动画?
| 我想问一下如何在Silverlight中为MVVM视图模型上的属性设置动画。例如,这里我在XAML中有一个典型的Storyboard声明: <DoubleAnimation
Storyboard.TargetName=\"yearSlider\"
Storyboard.TargetProperty=\"Value\"
From=\"1990\" To=\"2012\" Duration=\"0:0:8\" />
现在,假设我不想在Slider yearSlider上设置Value属性,而是想在MVVM视图模型上为CLR(非依赖)属性\“ Year \”设置动画。例如,如果将我的viewmodel设置为DataContext,则代码可能如下所示:
<DoubleAnimation
Storyboard.BindingSource=\"{Binding}\"
Storyboard.TargetProperty=\"Year\"
From=\"1990\" To=\"2012\" Duration=\"0:0:8\" />
当然,Storyboard上没有这样的\“ BindingSource \”属性,但这应该有助于说明我正在尝试执行的操作。
Silverlight 4中是否有任何机制可以完成使MVVM viewmodel属性动画化的任务,而无需在背后的代码中添加代码?解决方法
是。你可以这样做。
MVVM中的属性必须是依赖项属性,而不是常规属性。因此,您的MVVM必须继承自DependencyObject,然后您可以创建可以动画化的依赖项属性。
public class MyViewModel : DependencyObject
{
public static readonly DependencyProperty YearProperty =
DependencyProperty.Register(
\"Year\",typeof(int),typeof(MyViewModel),null
);
public int Year
{
get { return (int)GetValue(YearProperty); }
set { SetValue(YearProperty,value); }
}
}
然后,您的XAML如下所示:
<DoubleAnimation
Storyboard.Target=\"{Binding}\"
Storyboard.TargetProperty=\"Year\"
From=\"1990\" To=\"2012\" Duration=\"0:0:8\" />
试试看,让我知道是否可行。
如果不是,请尝试摆弄它,直到您弄清楚如何使用DoubleAnimation满足绑定要求。也许您可以背负范围内的另一个元素:
<TextBlock x:Name=\"YearLabel\" Text=\"{Binding Year}\" />
<DoubleAnimation
Storyboard.TargetName=\"YearLabel\"
Storyboard.TargetProperty=\"DataContext.Year\"
From=\"1990\" To=\"2012\" Duration=\"0:0:8\" />
注意我们如何修改\“ DataContext.Year \”。它不必是TextBlock。可以是任何具有名称的元素...例如RootLayout Grid。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。