【发布时间】:2014-11-10 05:25:54
【问题描述】:
我正在使用 caliburn micro v2 为 windows phone 开发一款游戏。
我想在棋盘上放一块石头时开始动画。
我想知道当视图模型中发生石头改变事件时如何启动动画/故事板。 我更喜欢将 xaml 放在石头样式中,因为棋盘上的石头数量。
【问题讨论】:
标签: storyboard windows-phone-8.1 caliburn.micro
我正在使用 caliburn micro v2 为 windows phone 开发一款游戏。
我想在棋盘上放一块石头时开始动画。
我想知道当视图模型中发生石头改变事件时如何启动动画/故事板。 我更喜欢将 xaml 放在石头样式中,因为棋盘上的石头数量。
【问题讨论】:
标签: storyboard windows-phone-8.1 caliburn.micro
您不应按照建议从视图模型中调用情节提要。这个故事是特定于视图的,您将删除代码的可测试性和可移植性。
您的问题不是很具体,并且没有代码示例,因此不太容易提供帮助,但请考虑使用触发器来启动您的故事板。这样一来,您就可以将所有内容尽收眼底。
如果您在视图模型中有一个属性,您可以使用数据触发器在故事板更改值时启动它。也许类似的东西
进口:
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>
【讨论】:
我以前从未做过 windows phone 应用程序。但我在 wpf 应用程序中使用以下代码
如果您的样式是在 App.xaml 的资源中定义的,则可以使用此代码
代码如下:
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? 我希望它对您的业务有所帮助。
【讨论】: