Я создаю приложение для языкового переводчика.Я использую API, чтобы получить все языки, на которые пользователь может перевести свой ввод, и хранить их в средстве выбора.В настоящее время я пытаюсь получить и загрузить все языки в средство выбора после запуска приложения.Я попытался реализовать функцию OnStartUp в App.xaml.cs, выполнив следующие действия:
App.xaml.cs
protected override void OnStart()
{
var mainPage = new MainPage();
this.MainPage = mainPage;
mainPage.getLanguages();
}
MainPage.xaml
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:LanguageTranslator"
x:Class="LanguageTranslator.MainPage">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
.......
<StackLayout x:Name="slLanguages" Grid.Row="5" Orientation="Horizontal" HorizontalOptions="Center" Margin="3, 6, 3, 3">
<Label Text="Languages: " />
<Picker x:Name="pckLanguages">
<Picker.Items>
</Picker.Items>
<Picker.SelectedIndex>1</Picker.SelectedIndex>
</Picker>
</StackLayout>
</Grid>
</ContentPage>
MainPage.xaml.cs
public void getLanguages()
{
#region Load all available languages into the picker 'pckLangugages'
// Fills the picker 'pckLanguages' with all available langauges when the main page is loaded
var serverResponse = Request(string.Format(ApiSetup.getLanguages, ApiSetup.APIKey, lblSourceLanguage.Text));
var dictionary = JsonConvert.DeserializeObject<IDictionary>(serverResponse.Content); // Converts the server response into JSON format
foreach (DictionaryEntry dictionaryEntry in dictionary)
{
if (dictionaryEntry.Key.Equals("langs"))
{
var languages = (JObject)dictionaryEntry.Value;
LanguagesList = new List<string>();
pckLanguages.Items.Clear();
foreach (var lang in languages)
{
if (!lang.Equals(lblSourceLanguage.Text))
{
pckLanguages.Items.Add(lang.Value.ToString());
LanguagesList.Add(lang.Key);
}
}
}
}
(Request
- это функция, которая устанавливает клиент RestSharp и запрос. ApiSetup
это класс, который обрабатывает API стороны - получение всех доступных языков, определение исходного языка и т. д. pckLanguages
- это средство выбора в MainPage.xaml, которое позволяет пользователю выбрать язык, на который он может перевести введенный текст в).
Хотя OnStartUp, кажется, вызывается (если я что-то отлаживаю. Напишу, он будет выведен на консоль).Я также пытался использовать OnAppearing, но безрезультатно:
protected override void OnAppearing()
{
getLanguages();
}
Я также пытался использовать загруженное событие , но свойство Stacked не было найдено в StackPanel.
Если у кого-нибудь есть идеи о том, как решить эту проблему, и / или он знает, что я делаю неправильно, это будет высоко ценится.