Динамически заполнить VoiceCommand PhraseList, ошибка VoiceCommandSet не найдена
Я ищу способ динамически заполнить мой VCD-файл. У меня есть фрагмент кода из документации Windows, который гласит:
Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinition.VoiceCommandSet commandSetEnUs;
if (Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager.
InstalledCommandSets.TryGetValue(
"AdventureWorksCommandSet_en-us", out commandSetEnUs))
{
await commandSetEnUs.SetPhraseListAsync(
"destination", new string[] {“London”, “Dallas”, “New York”, “Phoenix”});
}
Но когда я помещаю это в мою версию App.OnActivation (), Visual Studio показывает ошибку, в которой говорится, что VoiceCommandSet не содержится в "Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinition". Мои вопросы:
Я делаю это не в том месте? Знаете ли вы примеры проектов, которые показывают, как это сделать правильно? (Я заглянул в Adventure Works, но не нашел там этих строк) Или мне не хватает некоторых ссылок, о которых я не знаю?
1 ответ
public async Task UpdateDestinationPhraseList()
{
try
{
// Update the destination phrase list, so that Cortana voice commands can use destinations added by users.
// When saving a trip, the UI navigates automatically back to this page, so the phrase list will be
// updated automatically.
VoiceCommandDefinition commandDefinitions;
string countryCode = CultureInfo.CurrentCulture.Name.ToLower();
if(countryCode.Length == 0)
{
countryCode = "en-us";
}
if (VoiceCommandDefinitionManager.InstalledCommandDefinitions.TryGetValue("AdventureWorksCommandSet_" + countryCode, out commandDefinitions))
{
List<string> destinations = new List<string>();
foreach (Model.Trip t in store.Trips)
{
destinations.Add(t.Destination);
}
await commandDefinitions.SetPhraseListAsync("destination", destinations);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Updating Phrase list for VCDs: " + ex.ToString());
}
}