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

2023-12-23

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

MediaElement 的“play()”方法需要基于 ViewModel 中的布尔变量来执行。

提前致谢!


使用 IResult。示例代码 https://bitbucket.org/dbeattie/cmdemo/src编辑:基于布尔值,如果您描述这种情况,我可以更改示例。

View:

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

视图模型:

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;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MediaElement 和 Caliburn Micro 在 Silverlight 中播放声音 的相关文章

  • 如何使用 NavigationService.Navigate 传递查询字符串变量?

    问候 搜索了这个 但没有运气 我正在尝试在我的 Silverlight 4 应用程序中传递查询字符串变量 然后检索它们 首先我尝试了这个 this NavigationService Navigate new Uri LoanProduct
  • Javascript 播放声音性能重吗?

    我正在用 Javascript 制作一个简单的游戏 当一个物体与墙壁碰撞时 它会发出 砰 的声音 声音的响度取决于物体的速度 速度越高 gt 声音越大 播放功能 playSound function id vol ID of the sou
  • Java - 无缝改变循环剪辑的音量?

    我有一个循环剪辑 我像这样改变音量 clip stop clip flush FloatControl fc FloatControl clip getControl FloatControl Type MASTER GAIN fc set
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • getAudioInputStream() 期间标记/重置异常

    我发布了问题的修复 如下所述 但无法确认它是否解决了问题 使用 Java 7 的人会尝试以下 Applet 并报告吗 我们将非常感激 音频混合器演示 http www hexara com VSL AudioMixerDemoWarOfWo
  • 使用 VBScript 切换当前活动声音设备?

    我想在连接到我的计算机 Windows 7 32 位 的两个音频设备之间切换 我看了一下question https stackoverflow com questions 35709 change active sound card on
  • 如何将 MP3 音频文件读入 numpy 数组/将 numpy 数组保存到 MP3?

    有没有办法从 MP3 音频文件中读取 写入 MP3 音频文件numpy具有类似 API 的数组scipy io wavfile read https docs scipy org doc scipy 0 14 0 reference gen
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 如何使用 C# 中的 Caliburn.Micro 从 ListView 获取选定的项目和事件?

    我使用 Caliburn Micro 库用 MVVM C 和 XAML 编写了一个程序 我怎样才能 get all选定的项目 不仅是一项 获取选定的更改事件 通过单击标题列对项目进行排序 任何帮助 将不胜感激 图形用户界面代码 视图 Mai
  • 是否可以通过 Android 应用程序来录音?

    我是一名开发人员 希望创建一个 Android 应用程序来记录电话 这是出于我个人的需要 为了我自己的目的和记录而记录电话 是否有可能做到这一点 是否可以访问麦克风以及通过扬声器发出的声音 我对 Android 开发有点陌生 所以请耐心等待
  • 我们可以使用 C# 录制发送到扬声器的声音吗

    我有一个软件 SoundTap Streaming Audio Recorder 它记录发送到扬声器的任何音频 无论流是来自网络还是来自某些文件或麦克风 我可以在桌面应用程序中制作这样的应用程序 以便我可以录制发送到扬声器的流 无论来源如何
  • Visual Studio 不显示设计数据

    我目前正在尝试将设计数据集成到我的 UWP 应用程序中 对于这种方法 我遵循了微软的步骤 https learn microsoft com en us windows uwp data binding displaying data in
  • 将 MouseBindings 添加到数据绑定 WPF ListView 中的项目

    我试图在用户单击 ListView 中的项目时执行 ViewModel 中的命令 当我添加一个ListViewItem在 XAML 中我可以添加一个MouseBinding to its InputBindings
  • 使用 Javascript/Web Audio API 访问/处理系统音频

    是否可以使用 Web Audio API 访问系统音频 以便对其进行可视化或应用均衡器 看起来可以将系统音频连接到 Web Audio API 可以访问的输入设备 即Web Audio API 获取声卡的输出 https stackover
  • 如何让游戏音频在某个点循环播放

    我的游戏中有一场风暴 所以我制作了一个环境音频文件 它慢慢成长为一场风暴 雨逐渐消失 然后变成一个可循环的风暴音频文件 我是这样做的 Play intro clip and merge into main loop var introTim
  • MVVM 创建 ViewModel

    有人可以向我解释一下如何为 MVVM 模式创建 ViewModel 我试图理解这里的教程 http msdn microsoft com en us magazine dd419663 aspx http msdn microsoft co
  • 当我的应用程序最小化时,在 Android 中使用 Youtube API 播放音乐视频中的音频

    我正在开发一个使用 Youtube API 的应用程序 因为我主要集中于MUSIC VIDEOS 来自 Youtube 当我离开应用程序时 我需要在后台播放视频的音频 但每次我导航到另一个应用程序时 视频都会暂停 我该怎么做才能解决这个问题
  • 密码盒和 MVVM

    我们有以下场景 MVVM 用户界面 用户可以在其中输入密码 实际上是一个PasswordBox 应该做一些工作的服务器 服务器连接到一些需要身份验证的数据库 我已经读过这个关于MVVM中PasswordBox的问题 https stacko
  • 从 Silverlight 4 升级到 Silverlight 5 导致 AccessViolationException

    我们已经将项目从 Silverlight 4 升级到 Silverlight 5 现在我们正在体验AccessViolationException有时在代码的不同地方 这个异常也会导致浏览器崩溃 有什么指导方针可以防止这种情况发生吗 我正在
  • 为什么我的 WPF 复选框绑定不起作用?

    我正在使用 MVVM VS 2008 和 NET 3 5 SP1 我有一个项目列表 每个项目都公开一个 IsSelected 属性 我添加了一个复选框来管理列表中所有项目的选择 取消选择 更新每个项目的 IsSelected 属性 一切正常

随机推荐