windows-phone-7 - Silverlight 和动画中的 MVVM

标签 windows-phone-7 animation mvvm

鉴于我们有以下观点:

<StackPanel>

<TextBlock Text="Some text"/>
<Image Source="{Binding vmImageProp}" Height="10" Visibility="{Binding vmImageVisProp}" />

<StackPanel/>

在启动时,当 ViewModel 被初始化并绑定(bind)到 View 时,vmImageVisProp设置为已折叠。没错,我不需要为隐藏图像预留空间。

在应用程序执行的某个点,一个逻辑告诉 VM 使 Image 可见。如果我只是设置 vmImageVisProp属性(property)给 Visible ,我的 StackPanel 会立即重新调整大小,从而产生不想要的跳跃效果。

但是我想为 StackPanel 的平滑调整大小设置动画,然后,当空白空间准备好时,图像就会出现在那里。

我知道如何为此制作一系列动画。

我不知道的是如何解决 StackPanel 的未知最终大小。我需要知道它才能告诉动画 StackPanels 的高度值应该有多大。

我知道堆栈面板的高度应该增加 10(出现图像的高度),但是当我定义动画时,我需要在 stackPanel 上显式设置结果高度。

由于我要从 ViewModel 代码执行动画,我可以即时计算它,但我不知道如何获取 StackPanel 的高度,因为 viewModel 对此一无所知。

为这种图像插入设置动画的正确方法是什么?

最佳答案

使用 WPF 和 Silverlight(用于网络)有一个 Visibility.Hidden隐藏元素但保留所需空间的值。但是,我认为这在 Silverlight for Windows Phone 7 中不可用。

作为替代方案,如何设置图像的 Opacity为零,然后将其设置为 1 以显示它?使用零不透明度,您将可以使用图像高度/宽度来执行动画。

关于windows-phone-7 - Silverlight 和动画中的 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274279/

相关文章:

c# - IDataErrorInfo 结合 MVVM Light 消息重新附加

c# - 多个事件处理程序触发,为什么?

c# - XNA 如何创建单独的 ContentManager?

javascript - 使 div 带有动画飞到另一个 DOM 位置

flash - 伟大的项目、作品、编程和艺术/音乐交叉领域的人?

wpf - 使用 MVVM WPF 在 ViewModel 中实现事件处理程序

silverlight - Windows Phone 7/Silverlight 样式的良好引用?

database - SQL CE 3.5 (Windows Phone Mango) 支持哪些数据类型

iOS 动画 block 手势识别器

wpf - Prism 7.0 RegisterSingleton 不工作?