如何将windows . ui合成动画集成到UWP MVVM Light应用程序中
本文关键字:UWP MVVM Light 应用程序 集成 动画 windows ui | 更新日期: 2023-09-27 18:18:24
我第一次在我的应用程序中使用Windows.UI.Composition框架。我的应用程序是建立在MVVM Light上的。我正在更新应用程序,以添加更多元素之间的过渡动画。
MVVM的流行观点是,你应该尽可能地保持你的UI代码在XAML中,将可视状态绑定到ViewModel属性,等等。但是我所看到的所有Windows.UI.Composition材料和示例,都是在代码后面定义UI操作。
让我们以显示/隐藏场景为例。我有一个bool属性在我的ViewModel像ShowTheBox
。我将TheBox的Visibility属性绑定到ViewModel属性。框将根据我的ViewModel中的变化自动显示或隐藏。
现在,使用Windows.UI。合成方面,我想在TheBox的可见性变化中添加渐入/渐出动画。哪里是放置c#代码的最佳位置,我如何将转换绑定到我的ShowTheBox
属性?
我不同意MVVM的观点是将UI代码完全保留在XAML中。与其他层分离模式一样,MVVM的重点是将UI层与应用程序的逻辑分离。MVVM只是以绑定的形式添加了自己的风格。
所以我认为当你有复杂的动画和其他UI相关的东西时,把它们放在代码后面是很好的。但在此之前,你可能想尝试提取尽可能多的动画,你可以自定义控件,这将有助于你的疑问一点点。
编辑:将大量UI逻辑直接绑定到ViewModel属性并不总是一个好的解决方案。层分离的存在是有原因的,所以当你组合你的层,想象你正在写一个Xamarin应用程序,有共同的viewmodel,但不同的平台不同的视图。现在你甚至不确定在另一个平台上是否会有这些动画。也许在UWP上占用一个屏幕的流程在iOS上占用两个屏幕。要有一个属性"IsVisible",它只服务于许多视图中的一个现在没有多大意义,是吗?因此,你必须为ViewModel找到一些共同的名称,并将其他所有内容移到UI图层。
在一天结束时,MVVM只是一个模式,可以帮助您编写更好的代码。想要尽可能地坚持所有好的实践是可以理解的,但如果它对你的应用程序没有意义——值得吗?