audio - 使用 MediaElement 和 Caliburn Micro 在 Silverlight 中播放声音

标签 audio silverlight-4.0 mvvm mediaelement caliburn.micro

如何使用 Caliburn Micro 在 Silverlight 中播放 MP3?

MediaElement 的“play()”方法需要根据 ViewModel 中的 bool 变量执行。

提前致谢!

最佳答案

使用 IResult。 sample code 编辑:基于 bool 值,如果您描述这种情况,我可以更改样本。

查看:

<Grid>
        <MediaElement AutoPlay="False"
                      Source="../Assests/Kalimba.mp3"></MediaElement>
        <Button x:Name="Play"
                Content="Play"
                Height="50"
                Width="150" />
    </Grid>

View 模型:

public class MediaViewModel : Screen
    {
        public MediaViewModel()
        {
            DisplayName = "Media Sample";
        }

        public IEnumerable<IResult> Play()
        {
            var result = new PlayMediaResult();
            yield return result;
        }
    }

播放媒体结果:

 public class PlayMediaResult : IResult
    {
        public void Execute(ActionExecutionContext context)
        {
            var view = context.View as FrameworkElement;
            var mediaElement = FindVisualChild<MediaElement>(view);

            if (mediaElement != null)
            {
                mediaElement.Play();
                Completed(this, new ResultCompletionEventArgs {});
            }

            Completed(this, new ResultCompletionEventArgs {});
        }

        public event EventHandler<ResultCompletionEventArgs> Completed;

        public static TChildItem FindVisualChild<TChildItem>(DependencyObject obj)
            where TChildItem : DependencyObject
        {
            for (var i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
            {
                var child = VisualTreeHelper.GetChild(obj, i);
                if (child != null && child is TChildItem)
                    return (TChildItem) child;

                var childOfChild = FindVisualChild<TChildItem>(child);
                if (childOfChild != null)
                    return childOfChild;
            }
            return null;
        }
    }
}

关于audio - 使用 MediaElement 和 Caliburn Micro 在 Silverlight 中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7446850/

相关文章:

api - 网络音频 API 复音 - 使用 2 个不同的增益节点不起作用?

button - 添加按钮单击Sound Unity3D 5.4

c# - 在企业门户中托管时的 Silverlight 4 OOB 更新过程

c# - 当设计中已经存在一个或多个选项卡时,如何在 WPF MVVM 中动态添加选项卡控件

qt - 如何在不缩放的情况下显示/遮盖图像的一部分-QtQuick/QML

ios - iPhone : Error uploading audio wav bytes data to server

silverlight - 如何使用 MVVM 在 Silverlight 4.0 中执行导航?

xaml - Silverlight 4 MVVM ComboBox 数据绑定(bind)未显示

c# - 条件键绑定(bind)

wpf - 您在 MVVM 中绑定(bind) DataContext 的策略是什么?