Возникли проблемы с привязкой коллекции Observable к моему ListView в формах Xamarin - PullRequest
0 голосов
/ 21 сентября 2019

Я очень новичок в Xamarin Forms и пытаюсь привязать свою коллекцию Observable "DisplayItems" к моему списку, но я не могу понять, как это сделать, и могу отобразить имя для элемента.Я могу получить марку listview.ItemsSource = DisplayItems, но когда я это сделаю, я не знаю, как сделать метку на дисплее списка, чтобы получить название предмета.Любая помощь будет оценена.

    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ComponentModel
    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;


    namespace ShoppingList
    {
        [XamlCompilation(XamlCompilationOptions.Compile)]
        public partial class Page1 : ContentPage
        {

            public ObservableCollection<Item> DisplayItems;

            public Page1()
            {
                InitializeComponent();

                DisplayItems = new ObservableCollection<Item>();

                DisplayItems.Add(new Item("potato", 3.40, 3, false));
                DisplayItems.Add(new Item("juice", 4.70, 5, true));


                BindingContext = this;

            }


        }
    }

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:d="http://xamarin.com/schemas/2014/forms/design"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 mc:Ignorable="d"
                 x:Class="ShoppingList.Page1"
                 Title ="ViewPage">
        <ContentPage.Content>
            <StackLayout>

                <ListView x:Name="listview"  ItemsSource="{Binding DisplayItems}" HasUnevenRows="True" HorizontalOptions="Fill" VerticalOptions="Fill" >
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell x:Name="viewcell">
                                <StackLayout>
                                    <Label x:Name="ListCell" Text="{Binding name}"/>
                                </StackLayout>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>


            </StackLayout>
        </ContentPage.Content>
    </ContentPage>

1 Ответ

0 голосов
/ 23 сентября 2019

Взглянув на этот документ, задайте данные модели для ListView. Привязка данных в ListView .

Вы должны определить Item class следующим образом:

public class Item 
{
    public string name {get; set;}
}

Затем в ContentPage добавить некоторые данные DisplayItems:

namespace ShoppingList
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Page1 : ContentPage
    {

        public ObservableCollection<Item> DisplayItems;

        public Page1()
        {
            InitializeComponent();

            DisplayItems = new ObservableCollection<Item>();

            DisplayItems .Add(new Item{ name="Rob Finnerty"});
            DisplayItems .Add(new Item{ name="Bill Wrestler"});

            BindingContext = this;
        }

    }
}

Последний в Xaml это может работать:

<ListView x:Name="listview"  ItemsSource="{Binding DisplayItems}" HasUnevenRows="True" HorizontalOptions="Fill" VerticalOptions="Fill" >
      <ListView.ItemTemplate>
           <DataTemplate>
               <ViewCell x:Name="viewcell">
                    <StackLayout>
                           <Label x:Name="ListCell" Text="{Binding name}"/>
                    </StackLayout>
                </ViewCell>
           </DataTemplate>
      </ListView.ItemTemplate>
  </ListView>
...