Динамически заполнить 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());
            }
        }
Другие вопросы по тегам