Mik*_*iaz 3 silverlight mvvm mvvm-light
我已经阅读了很多关于播放声音/动画的最佳方式的博客,但如果可能的话,我希望看到一个关于如何完成这个的简化示例,以便我更好地理解.
所以我对MVVM的理解
视图 - >声音和动画
ViewModel - >如果某个值为true,我想在视图上播放声音和动画.
现在,我将如何做到这一点.我被告知要使用像ISoundService和IAnimationService这样的接口.在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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用依赖注入将它传递给我的ViewModel:
public class TheViewModel
{
public TheViewModel(IAudioPlayer audioPlayer)
{
// probably store it as a private readonly field for later use.
}
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是在那里有一个健全的服务,听取ViewModel通过某个消息传递系统发送的事件......例如,EventAggregator.
就动画而言,相同类型的方法可以起作用.通常,我在XAML中的View中定义动画.然后,在View中,我会侦听从ViewModel触发的某种事件,以告诉View执行该动画.
此外,在过去,我使用数据绑定来加倍在ViewModel中控制的值,因此仍然存在一些可测试的行为来管理动画.
我使用的另一种方法是混合MVVM/MVP,其中ViewModel通过一个名为ExecuteDeletionAnimation的方法传递一个IView接口.ViewModel调用该方法,View实现该方法.
希望这个对你有帮助?
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |