MvvmCross (v3):在多平台应用程序中使用行为和故事板是错误的吗?

本文关键字:故事 错误 v3 应用程序 平台 MvvmCross | 更新日期: 2023-09-27 18:11:43

我想知道在这种情况下什么被认为是最佳实践(或者其他人如何解决这个问题)。

我试图创建一个简单的游戏与MvvmCross,将(希望)在不同的平台上运行。实际上,我之前只有Windows Phone的开发经验,我现在正通过尝试使用WinRT应用程序"更进一步"(下一步…Android!)。

即使是一个简单的游戏,我也需要在这里和那里创建一些动画,使事情变得更有趣/更流畅。

在WP7上,它被用来创建故事板(使用Blend),并使用行为来触发动画来响应值的变化,正确的答案等等,所有这些都避免了代码隐藏的技巧。我只是简单地认为我可以很容易地在其他平台上做同样的事情,不管怎样,但我认为我必须重新考虑很多细节=>(今天我了解到WinRT不支持行为和事件触发器)

为了完整起见,我将写两个有问题的场景示例:

1)我有一些元素是隐藏的(透明),我希望他们只在用户点击按钮后显示。(因此"流程"将类似于:View -> VM -> PropertyChanged -> Trigger(?))

2)我需要根据方法的执行结果触发不同的动画(这将检查用户的答案,所以我将有一个"赢家"或"输家"动画)。

我的问题是:

1)我如何解决这些问题在WinRT应用程序?是否存在最佳实践?我正在寻找这个项目(http://winrtbehaviors.codeplex.com/),但我不知道它是否适合MvvmCross。

2)我知道我会找到一种(希望是简单的)方法在Android和iOS上重现类似的行为(和动画),我能睡得安稳吗?

我希望我已经成功地解释了自己。感谢大家=)

MvvmCross (v3):在多平台应用程序中使用行为和故事板是错误的吗?

我不知道它是否适合MvvmCross。

对于每一个平台来说,显示动画的挑战以及将事件与ViewModel属性和命令挂钩的挑战都是平台特有的问题。

这些都是特定于视图的问题,所以你应该能够在每个视图层(在单独的UI项目中)解决它们。

如何在WinRT应用程序中解决这些问题?是否存在最佳实践?

对于WinRT,至少有一个人使用过nuget - http://slodge.blogspot.co.uk/2013/02/behaviors-for-windows-8-winrt-store.html中的行为

在Android和iOS上复制类似的行为?

根据我的经验,绑定到Android和iOS UI事件比绑定到XAML事件更容易——通常你不需要EventToCommand类型的适配器,因为Mvx绑定可以直接与事件一起工作。

(和动画)

动画取决于每个平台/UI。Android和iOS都有制作动画的方法。

  • 对于Android,我推荐观看http://dotnetmobilepodcast.blogspot.com/2013/02/android-animations.html

  • 对于iOS,我建议观看http://dotnetmobilepodcast.blogspot.com/2012/09/delighting-your-users-with-coreanimation.html

iOS动画特别容易做,特别漂亮——你需要一些c#代码来做这些,但这些代码将比XAML短得多。


有了这些问题,我建议你继续尝试……您应该能够在不改变共享核心的情况下实现它们,并且您应该能够一次克服一个平台的挑战。