Загрузка представления списка внутри главной страницы xaml по событию нажатия кнопки в xamarin - PullRequest
0 голосов
/ 14 мая 2018

Я занимаюсь разработкой гибридного приложения xamarin. У меня есть страница содержимого с кнопкой, и я хочу загрузить представление списка внутри страницы содержимого при событии нажатия кнопки. Функция для получения данных из API

    public static async Task<List<TranslationWords>> GetTranslation()
    {           
        string url = "";//api url here

        dynamic results = await DataService.GetDataFromService(url).ConfigureAwait(false);

        if (results != null)
        {

            var wordsList = JsonConvert.DeserializeObject<List<TranslationWords>>(results);
            Console.WriteLine(wordsList);
            return wordsList;
        }
        else
        {
            return null;
        }

    public static async Task<List<dynamic>> GetDataFromService(string url)
    {
        HttpClient client = new HttpClient();
        var json = "{'word':'wide','type':'eng_to_tam'}";
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        var response = await client.PostAsync(url, content);

        dynamic data = null;
        if (response != null)
        {
            string res = response.Content.ReadAsStringAsync().Result;
            data = JsonConvert.DeserializeObject(res);    
            return data;           

        } else {
            //code to handle null response
         }   

       }

код для детализации главной страницы xaml

    <ContentPage.Content>
      <StackLayout Padding="10">

    <Switch HorizontalOptions="Start" VerticalOptions="Start" Toggled="Switcher_Toggled"></Switch>
    <Label Text="Enter a Word:" />
    <Entry x:Name="wordToFind" Text="" />
    <Button x:Name="searchButton" Text="Search" Clicked="Load_List"/>
    <ContentView x:Name="MainPageContainer" 
                     HorizontalOptions="FillAndExpand" 
                     VerticalOptions="FillAndExpand" 
                     />           
    </StackLayout>
</ContentPage.Content>

просмотр списка xaml

Представление списка размещается внутри представления содержимого (MainPageContainer) на главной странице. Представление содержимого будет загружено данными при нажатии кнопки на главной странице сведений

     <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout
                     Padding="10">
                    <Label
                        Text="{Binding TamilWord}"
                        LineBreakMode="NoWrap"
                        Style="{DynamicResource ListItemTextStyle}"
                        FontSize="16" />
                    <Label
                        Text="{Binding TamilMeaning}"
                        LineBreakMode="NoWrap"
                        Style="{DynamicResource ListItemDetailTextStyle}"
                        FontSize="13" />
                    <Label
                        Text="{Binding EnglishTranslation}"
                        LineBreakMode="NoWrap"
                        Style="{DynamicResource ListItemDetailTextStyle}"
                        FontSize="13" />


                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
   </ListView>

привязка данных в файле .cs

     public List<TranslationWords> Words;


    public TransList ()
    {
        InitializeComponent ();
        Words = Core.GetTranslation().Result;  //method to get data from api
        transListView.ItemsSource = Words;
    }

1 Ответ

0 голосов
/ 14 мая 2018

Вероятно, самый простой способ - установить IsVisible на False, а в вашем событии при нажатии True. Если «загрузить» означает «показать».

Ваш XAML

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:XFIntro"
         x:Class="XFIntro.MainPage">
    <StackLayout>
    <Button Text="Click" Clicked="ListClicked" />

    <ListView x:Name="LView" IsVisible="False"/>
</StackLayout>

</ContentPage>

Код Бехин

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        LView.ItemsSource = new List<string>() { "foo", "bar", "baz"};
    }

    void ListClicked(object sender, EventArgs e)
    {
        LView.IsVisible = true;
    }
}

Если загрузка означает, что вы хотите загрузить элементы в просмотр списка с событием click, код почти такой же, просто используйте LView.ItemsSource = new List<string>() { "foo", "bar", "baz"}; в вашем событии click сейчас и установите ListView всегда видимым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...