如何使用 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/