gpt4 book ai didi

silverlight - 如何在 MVVM 中播放声音和动画

转载 作者:行者123 更新时间:2023-12-01 09:09:24 24 4
gpt4 key购买 nike

我已经阅读了很多关于播放声音/动画的最佳方式的博客,但如果可能的话,我希望看到一个关于如何完成此操作的简化示例,以便我更好地理解。

我对 MVVM 的理解

View -->声音和动画

ViewModel-->如果某个值为真,我想在 View 上播放声音和动画。

现在我该怎么做。我被告知要使用 ISoundService 和 IAnimationService 等接口(interface)。在View中实现然后做什么?如果可能的话,一个可行的裸骨示例将有很大帮助。

最佳答案

就声音而言,这不一定是处理它的 View 。例如,我为播放声音做了这样的事情:

public interface IAudioPlayer
{
void Play(string fileName);
}

public class AudioPlayer : IAudioPlayer
{
private readonly SoundPlayer player = new SoundPlayer();

public void Play(string fileName)
{
player.Stream = File.OpenRead(fileName);
player.Play();
}
}

然后,我使用依赖注入(inject)将其传递到我的 ViewModel:

public class TheViewModel
{
public TheViewModel(IAudioPlayer audioPlayer)
{
// probably store it as a private readonly field for later use.
}
}

另一种选择是让一个健全的服务坐在那里,监听 ViewModel 通过某个消息传递系统发送的事件......例如 EventAggregator。

就动画而言,可以使用相同类型的方法。通常,我在 XAML 中的 View 中定义动画。然后,在 View 中,我监听 ViewModel 触发的某种事件,以告诉 View 执行该动画。

此外,在过去,我曾使用数据绑定(bind)来对 ViewModel 中控制的值进行加倍,因此仍有一些可测试的行为来管理动画。

我使用的另一种方法是混合 MVVM/MVP 事物,其中 ViewModel 通过一个 IView 接口(interface)传递一个名为 ExecuteDeletionAnimation 的方法。 ViewModel 调用方法,View 实现方法。

希望这会有所帮助?

关于silverlight - 如何在 MVVM 中播放声音和动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com