MVVM Light 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
은 코드 숨김으로 직접 처리됩니다. 내 뷰 모델에서
, 나는 메시지에 대해
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
인가? RelayCommand
등을 작성하여 스트림을 media
에 전달하려면 어떻게해야하나요?
관련 기사 MVVM pattern violation: MediaElement.Play()은이 문제를 해결하는 것으로 보이지만 MVVM Light에는 없으며 스트림을 전달할 방법이 없습니다.