【发布时间】:2021-12-20 12:37:21
【问题描述】:
在避开 MVVM 数周后,我终于决定再试一次。在我看来,我想要实现的目标相对简单。我想缩小一个框架,更新框架内的文本,然后再次将框架放大到正常大小
在我的代码隐藏中,我有一个方法可以在点击框架时将框架缩放到 0.1。我在后面的代码中将此作为手势识别器,因为我的理解是动画必须在视图中。
在我的 ViewModel 中,我有一个名为 FrameText 的属性。这是我要更新的值。我想在扩展之前更新属性。所以这就是我想出的。
>await TestFrame.ScaleTo(0.1, 60, Easing.Linear);
>ViewModels.MainViewModel.FrameText = "new text";
>await TestFrame.ScaleTo(1, 60, Easing.Linear);
我很快意识到这是有缺陷的,但在花了几个小时试图了解 MVVM 的工作原理后,我认为最好还是问一下。我不应该在这里使用 MVVM 吗?我是否误解了 MVVM 的工作原理?提前谢谢你。
【问题讨论】:
-
“缩小框架,更新框架内的文本,然后放大框架”——这听起来像是与底层数据无关的 UI 操作。
-
@Jason 感谢您的评论,但我想我误解了一些东西。我在后面的代码中有缩小框架和放大框架的操作,因为它们是 UI 操作。我想更新两个动画之间的文本,但属性在我的 ViewModel 中。我将如何从视图中修改 ViewModel 中的属性,以便它发生在两个动画之间?我是在错误地处理整个事情,还是应该干脆不使用 MVVM 和不同的方式来绑定数据?我是使用 MVVM 的新手,因此我们将不胜感激。
-
为什么不在虚拟机中公开一个在动画完成时触发的命令,并且会更新文本?
-
我该怎么做?我有一个可以更新文本的命令,但我不知道在动画完成后如何触发它。我知道如何从 XAML 触发命令,但我不知道可以从代码隐藏触发命令
标签: c# xamarin .net-core xamarin.forms