我正在使用 caliburn micro v2 为 windows phone 开发一款bord游戏。
我想在棋盘上放一块石头时开始动画。
我想知道如何启动动画/故事板,当在视图模型中发生石头更改事件时。 我更喜欢将xaml放在石头样式中,因为板上的石头数量很多。
答案 0 :(得分:0)
我以前从未做过windows phone应用程序。但是我在wpf应用程序中使用以下代码
如果您的样式在App.xaml的Resources中定义,则可以使用此代码
这是代码:
FrameworkElement element = new FrameworkElement();
Storyboard sb=new Storyboard ();
sb = element.FindResource("Please write here Storyboard Key") as Storyboard;
sb.Begin(target element name , true);
请看一下这个链接:How can I add a storyboard animation to my page resources in C#, then call it again later? 我希望它对您的业务有所帮助。
答案 1 :(得分:0)
您不应该按照建议从视图模型中调用故事板。故事是特定于视图的,您将删除代码的可测试性和可移植性。
您的问题不是非常具体,并且没有代码示例,所以它不是很容易帮助,但考虑使用触发器来启动故事板。通过这种方式,您可以在视图中保留所有内容。
如果viewmodel中有属性,则可以在更改值时使用数据触发器启动故事板。也许类似于这个
导入:
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
示例:
<interactivity:Interaction.Behaviors>
<core:DataTriggerBehavior Binding="{Binding LoginPageIsEnabled}"
ComparisonCondition="Equal" Value="False">
<core:GoToStateAction StateName="Loading" />
</core:DataTriggerBehavior>
<core:DataTriggerBehavior Binding="{Binding LoginPageIsEnabled}"
ComparisonCondition="Equal" Value="True">
<core:GoToStateAction StateName="DoneLoading" />
</core:DataTriggerBehavior>
</interactivity:Interaction.Behaviors>