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

Audio 使用MediaElement和Caliburn Micro在Silverlight中播放声音,audio,silverlight-4.0,mvvm,mediaelement,caliburn.micro,Audio,Silverlight 4.0,Mvvm,Mediaelement,Caliburn.micro,如何使用Caliburn Micro在Silverlight中播放MP3 MediaElement的“play()”方法需要基于ViewModel中的布尔变量执行 提前谢谢 使用IResult。 编辑:基于一个布尔值,如果你描述了这个场景,我可以修改这个示例 视图: 视图模型: public class MediaViewModel : Screen { public MediaViewModel() { DisplayName

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

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

提前谢谢

使用IResult。 编辑:基于一个布尔值,如果你描述了这个场景,我可以修改这个示例

视图:


视图模型:

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

        public IEnumerable<IResult> Play()
        {
            var result = new PlayMediaResult();
            yield return result;
        }
    }
公共类MediaViewModel:屏幕
{
公共媒体视图模型()
{
DisplayName=“媒体样本”;
}
公共数字游戏
{
var result=新的PlayMediaResult();
收益结果;
}
}
PlayMediaResult:

 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;
        }
    }
}
公共类PlayMediaResult:IResult
{
public void Execute(ActionExecutionContext上下文)
{
var view=context.view作为框架元素;
var medialelement=FindVisualChild(视图);
if(mediaElement!=null)
{
mediaElement.Play();
已完成(这是新的ResultCompletionEventArgs{});
}
已完成(这是新的ResultCompletionEventArgs{});
}
公共事件事件处理程序已完成;
公共静态TChildItem FindVisualChild(DependencyObject obj)
其中TChildItem:DependencyObject
{
for(var i=0;i
 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;
        }
    }
}