Динамическое представление метки по данным, поступающим от веб-сервисов Xamarin Forms - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь отобразить список информации внутри фрейма. Информация, поступающая из базы данных, состоит из двух частей, т. Е. «Описание»: «Значение» поэтому строка в списке делает группу описания и значения, а некоторые могут не иметь

так что кто-нибудь может мне помочь, как я могу добавить метку в сетку или стек в соответствии с данными, которые я получаю от своих сервисов, потому что иногда это может быть 3, а иногда может быть 5, а создание метки и связывание их будет статическим работа

1 Ответ

2 голосов
/ 21 апреля 2019

Существует очень четкий ответ, если вы можете использовать формы xamarin 3.5 или выше, BindableLayout.

XAML файл

<ListView
            x:Name="listView"
            HasUnevenRows="True"
            ItemsSource="{Binding Category}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="{Binding Name}" TextColor="Blue" />
                            <StackLayout BindableLayout.ItemsSource="{Binding users}">
                                <BindableLayout.ItemTemplate>
                                    <DataTemplate>
                                        <Label Text="{Binding Name}" />
                                    </DataTemplate>
                                </BindableLayout.ItemTemplate>
                            </StackLayout>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

В моей ViewModel

public class DynamicSwitchViewModel:BaseViewModel
    {
        public DynamicSwitchViewModel(ContentPage view):base(view)
        {
            ObservableCollection<User> users1 = new ObservableCollection<User>();
            users1.Add(new User() { Name = "karan3" });
            users1.Add(new User() { Name = "karan4" });
            users1.Add(new User() { Name = "karan5" });
            ObservableCollection<User> users2 = new ObservableCollection<User>();
            users2.Add(new User() { Name = "karan1" });
            users2.Add(new User() { Name = "karan2" });
            users2.Add(new User() { Name = "karan3" });
            users2.Add(new User() { Name = "karan4" });
            users2.Add(new User() { Name = "karan5" });
            ObservableCollection<User> users3 = new ObservableCollection<User>();
            users3.Add(new User() { Name = "karan1" });
            users3.Add(new User() { Name = "karan2" });
            users3.Add(new User() { Name = "karan3" });
            Category = new ObservableCollection<Category>();
            Category.Add(new Category() { Name = "1",users=users1 });
            Category.Add(new Category() { Name = "2",users=users2 });
            Category.Add(new Category() { Name = "3",users=users3 });


        }
        private ObservableCollection<Category> category;
        public ObservableCollection<Category> Category
        {
            get { return category; }
            set { SetProperty(ref category, value); }
        }

    }
    public class Category
    {
        public  ObservableCollection<User> users { get; set; }
        public string Name { get; set; }
    }
    public class User
    {
        public string Name { get; set; }
    }

Output:

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