Я пытаюсь установить для voice.gender значение «мужской» или «женский» с помощью переключателя ToggleSwitch на странице настроек в приложении Template10 UWP.
Объявляю ТГ:
<ToggleSwitch x:Name="VoiceSelection" Header="Select Voice"
IsOn="{Binding VoiceChoice, Mode=TwoWay}"
OffContent="Male Voice" OnContent="Female Voice" />
Это должно быть хорошо.
Затем я установил логическое значение, которое позже будет использоваться для выбора мужчины или женщины.
public event PropertyChangedEventHandler PropertyChanged;
public static bool _voiceChoice = true;
public bool VoiceChoice
{
get
{
return _voiceChoice;
}
set
{
_voiceChoice = value;
OnPropertyChanged("VoiceChoice");
}
}
protected void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
Для информации, вот код, который позже назначит голос. Это тоже хорошо работает.
...
if (_voiceChoice == true)
{
VoiceInformation voiceInfo =
(
from voice in SpeechSynthesizer.AllVoices
where voice.Gender == VoiceGender.Female
select voice
).FirstOrDefault() ?? SpeechSynthesizer.DefaultVoice;
synthesizer.Voice = voiceInfo;
stream = await synthesizer.SynthesizeTextToStreamAsync(text);
}
else
...
У меня проблема в том, что я могу выбрать голос, вручную установив логическое значение _voiceChoice, но я не могу установить его с помощью ToggleSwitch.
Я также понимаю, что это решение не очень чистое, и я открыт для любых предложений. Любая помощь приветствуется. Заранее спасибо.