MVVMライトViewModelBase
から継承したViewModelのテキスト文字列をXAMLページのMediaElement
に話すだけでいいです。ViewModelからXAMLページのMediaElementにストリームを送信するにはどうすればよいですか?
var synthesisStream = await synthesizer.SynthesizeSsmlToStreamAsync(text);
media.AutoPlay = true;
media.SetSource(synthesisStream, synthesisStream.ContentType);
media.Play();
上記のコードでは、ViewModelの分離がありません。 media
はコードビハインドで直接扱われています。
は私のViewModelでは、私は、メッセージのために
var synthesisStream = await synthesizer.SynthesizeSsmlToStreamAsync(text);
var msg=new PlaySpeechSynthesisStreamMessage(synthesisStream);
Messenger.Default.Send<PlaySpeechSynthesisStreamMessage>(msg);
で停止:
public class PlaySpeechSynthesisStreamMessage
{
public SpeechSynthesisStream Stream { get; set; }
public PlaySpeechSynthesisStreamMessage(SpeechSynthesisStream stream)
{
Stream = stream;
}
}
がMessenger
このような状況を処理するための正しい方法ですか?ストリームをmedia
に渡すには、RelayCommand
などを書くにはどうすればよいですか?
関連記事MVVM pattern violation: MediaElement.Play()はこの問題を解決しているようですが、MVVM Lightではなく、ストリームを渡す方法もありません。