我第一次在我的应用中使用Windows.UI.Composition框架。我的应用程序基于MVVM Light构建。我正在更新应用以在元素之间添加更多过渡动画。
MVVM的主流智慧是你应该尽可能地将你的UI代码保存在XAML中,将视觉状态绑定到ViewModel属性等等。但是我看到的所有Windows.UI.Composition材料和样本都是如此,改为在代码隐藏中定义UI操作。
让我们以show / hide场景为例。我的ViewModel中有一个bool属性,如ShowTheBox
。我将TheBox的Visibility属性绑定到ViewModel属性。 Box将根据我的ViewModel中的更改自动显示或隐藏。
现在,使用Windows.UI.Composition,我想将淡入/淡出动画添加到TheBox的可见性更改中。放置C#代码的最佳位置在哪里?如何将该转换绑定到我的ShowTheBox
属性?
答案 0 :(得分:1)
我不同意MVVM的观点是将UI代码专门保留在XAML中。与任何其他图层分离模式一样,MVVM的要点是将UI层与应用程序的逻辑分开。 MVVM只是以绑定的形式添加自己的风格。
所以我认为当你有复杂的动画和其他UI相关的东西时,把它们放在代码隐藏中是完全没问题的。但在此之前,你可能想尝试尽可能多地提取你的动画来自定义控件,这将有助于你的怀疑。
修改强> 使很多UI逻辑直接绑定到ViewModel属性并不总是一个好的解决方案。由于某种原因,存在图层分离,因此当您构建图层时,您要编写一个Xamarin应用程序并具有通用ViewModel,但不同平台的不同视图。现在你甚至不确定在另一个平台上是否会有这些动画。也许在UWP上占用一个屏幕的流程将在iOS上占用两个屏幕,或其他。拥有一个属性" IsVisible"只为许多观点之一提供服务现在没有多大意义,是吗?因此,您必须为ViewModel找到一些常见的面额,并将其他所有内容移至UI图层。
在一天结束时,MVVM只是一种帮助您编写更好代码的模式。想要尽可能多地遵守所有良好做法是可以理解的,但如果它对你的应用程序没有意义 - 是否值得呢?