gpt4 book ai didi

c# - 将 MediaStreamSource 绑定(bind)到 MediaElement

转载 作者:行者123 更新时间:2023-12-03 10:30:02 25 4
gpt4 key购买 nike

我有一个 MediaStreamSource这是动态生成的,我想绑定(bind)到 MediaElement。不幸的是 Source属性只接受 URI,所以我不走运。

有一种方法SetSource我可以在后面的代码中调用它,但我不知道如何在保持 MVVM 模式的同时做到这一点。

有没有人可以让我将 MediaElement 绑定(bind)到源?

解决方案(感谢 Claus Jorgensen)

我定义了一个类MainPageLoaded用作消息类。

public class MainPageLoaded
{
public MediaStreamSource StreamSource
{
get;
set;
}
}

然后我在我的 View 模型中发送我的消息
var msg = new MainPageLoaded(){ StreamSource = new MediaStreamSource()};
Messenger.Default.Send<MainPageLoaded>(msg);

并在我看来接收它
Messenger.Default.Register<MainPageLoaded>(this, (action) => SetSoundSource(action));

在处理之前
private void SetSoundSource(MainPageLoaded action)
{
SoundElement.SetSource(action.StreamSource);
}

最佳答案

您还可以使用 CommandParameter 将 MediaElement 传递给 ViewModel 并在 viewModel 中设置媒体源:

    public MyViewModel()
{
PlayPreviewCommand= new DelegateCommand(PlayPreview, CanPlayPreview);
}

public ICommand PlayPreviewCommand
{
get;
set;
}

public void PlayPreview(object par)
{
if (par != null && par is MediaElement)
{
var preview = composition.GeneratePreviewMediaStreamSource(640, 480);
(par as MediaElement).SetMediaStreamSource(preview);
(par as MediaElement).Play();
}
}

并在 Xaml View 中
<MediaElement x:Name="mediaElement" />
<AppBarButton Icon="Play"
Label="Play"
Command="{Binding PlayPreviewCommand}"
CommandParameter="{Binding ElementName=mediaElement}">

关于c# - 将 MediaStreamSource 绑定(bind)到 MediaElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com